2017-01-07 4 views
1

Ich arbeite an Poll-System und ich möchte Prozentsätze der Zeit, die diese Variante gewählt wurde zählen.
Zum Beispiel i 4 verfügbare Varianten bekommen habenProzentzahlen bei der Umfrage mit PHP/Mysql

Poll name | Vote number 
    Java |  250 
    Python |  200 
    C#  |  90 
    PHP  |  1 

Es 3 Spalten in meinem Polls db Id,Tex,Creator_id
Und es 4 Spalten in Poll_variants meine db von Fragen, die

Id | Poll_id | Variant | Vote_num 
1 | 1 | Java | 250 
1 | 1 | Python | 200 
1 | 1 | C#  | 90 
1 | 1 | PHP | 1 
+0

@GurV i hinzugefügt, was Ihr Geist wünschte – user7302801

+0

@ user7302801 zeigen uns, was Ihre gewünschte Ausgabe sein sollte, ist ?? – reza

+0

@GurV könnte ich deinen geist diesmal befriedigen? – user7302801

Antwort

1

Suche insgesamt Stimmen sind für jede Umfrage-ID in einer Unterabfrage und verbinden Sie sie mit der Haupttabelle, um den Prozentsatz jeder Variante zu finden.

select t1.*, 100 * t1.votes/t2.total_votes percentage 
from Poll_variants t1 
inner join (
    select poll_id, sum(votes) total_votes 
    from Poll_variants 
    group by poll_id 
) t2 on t1.poll_id = t2.poll_id; 
+0

Können Sie t1 und t2 erklären? Meine mysql Wissensgrenzen enden bei 'Join' Funktion – user7302801

+0

t1 und t2 sind Aliase für Ihre_Tabelle bzw. die Unterabfrage. Wir benutzen sie, damit wir nicht überall wie 'your_table.some_column' schreiben müssen – GurV

+0

also t1 ist meine Tabelle für Umfragen oder Fragen? – user7302801

0

Sie können mit folgenden SQL

SELECT *,Votes*100/(SELECT sum(Votes) from Poll_variants)total FROM Poll_variants WHERE 1 
+0

Was ist 'count * 100'? – user7302801

+0

opps ... meine schlechte ... es war Stimmen Spalte in meinem Test sql ... – reza

+0

Dieser Code zurückgeben neue Spalte 'total' mit' NULL' Wert – user7302801