2016-12-17 4 views
0

Tut mir leid, wenn meine Frage irrelevant ist. Weil ich kein Experte für MySQL bin.Mysql Prozentsatz der ausgewählten Zeilen berechnen

Ich habe Umfragen auf meiner Website. Wenn jemand meine Umfrage abstimmt, möchte ich die Umfrageergebnisse dem Wähler zeigen.

Hier ist die DB Struktur;

surveysTabelle (Enthält Umfrage Name Beschreibung und survey_id)

Surveys

survey_choicesTabelle (Enthält Umfrage chocies und im Zusammenhang mit survey_id zu Surveys Tabelle)

Survey Choices

Ich versuche nur die prozentuale Auswahl der sichtbaren Umfrage zu berechnen.

Wenn ich nur 1 Umfrage habe, berechnet es korrekte Ergebnisse. Aber wenn ich mehr als 1 Umfrage habe, berechnet MySQL die ganzen survey_vote_count Werte aller Tabellen.

Hier ist meine MySQL-Abfrage;

SELECT 
survey_vote_id, survey_vote_name, survey_vote_count, survey_id, 
survey_vote_count * 100/t.s AS survey_percentage 
FROM survey_votes 
CROSS JOIN (SELECT SUM(survey_vote_count) AS s FROM survey_votes) t 
WHERE visibility = :visibility 
AND survey_id = :surveyId 
ORDER BY `survey_votes`.`order_id` ASC 

Wie kann ich für zB berechnen nur survey_id = 1 and visibility = 1% Prozentsatz =% 100?

Jede Hilfe wird sehr geschätzt.

Antwort

1

Sie sollten Ihrem Cross-Join dieselbe Bedingung hinzufügen. Im Moment in Ihrem wählen Sie alle survey_vote_count Summe ohne gleichen in dem Zustand (Sichtbarkeit und survey_id.

+0

Hallo danke für deine Antwort. Aber wie? SELECT SUM (survey_vote_count) AS s VON survey_votes WHERE survey_id = surveyId und Sichtbarkeit == Sichtbarkeit'? – HddnTHA

+0

Sieht nach rechts. – TigOldBitties

+0

Es hat funktioniert, vielen Dank (: – HddnTHA

Verwandte Themen