webForumDet fria alternativet

Dynamisk Poll / Omröstning

3 svar · 928 visningar · startad av Sasch

SaschMedlem sedan nov. 2002830 inlägg
#1

Hej!

Sitter och meckar med en omröstning och jobbar mot mySQL. Har dock fastnat och verkar inte komma frammåt när det kommer till att visa resultatet;

tbl_poll

 ID
 Question - Frågan
 Active - Hurvida omöstningen går att rösta i (1/0)

tbl_pollanswers ( votes )

 uID  -> tbl_user.id
 qID  -> tbl_poll.id
 aID  -> tbl_pollalternative.id

tbl_pollalternative

 ID
 qID
 Name
  SELECT Name, poll.Question
    FROM pollalternative JOIN poll
      ON (pollalternative.qID = poll.ID)
   WHERE poll.Active = 1

SQL-frågan genererar en fråga + alla alternativ till den. Jag har dock ingen aning om hur jag ska få in tbl_pollanswer samt räkna ut summan av all röster på frågan, samt alla röster på varje enskilt alternativ. Jag vill ogärna behöva loopa ut varje alternativ och ge dom var sin separata SQL-sats för att sedan göra en server-side uträkning.

Är det möjligtvis någon som har lite hjälp att bidra med?

SaschMedlem sedan nov. 2002830 inlägg
#2

Jag har funderat lite och uppdaterat Queryn till följande:
Det ger fortarande inte tillfredsställande resultat dock.

  SELECT Name, poll.Question, COUNT(qID) as SubTot
    FROM pollalternative JOIN poll
      ON (pollalternative.qID = poll.ID) JOIN pollanswer
      ON (pollalternative.qID = pollanswer.qID)
   WHERE poll.Active = 1
GROUP BY pollalternative.qID, pollalternative.uID
GildebrandMedlem sedan juni 2009920 inlägg
#3

Skriv ut hur tabellerna ser ut, exempel på hur datat ser ut, och hur resultatet ska se ut så kan jag nog hjälpa dig

aasahMedlem sedan mars 20034 471 inlägg
#4

Vad är det du vill ha ut? Alla frågor, deras alternativ samt hur många som valt dessa? I så fall:

 
SELECT 
   P.Question,
   A.Name,
   COUNT(DISTINCT C.uid) -- Givet att varje person har en röst, annars COUNT(C.uid)
FROM
   tbl_poll P
   INNER JOIN tbl_pollalternative A ON
      P.ID = A.qID  -- Detta är samma ID (polls)
   LEFT JOIN tbl_pollanswers C ON -- Choices folk har gjort
      A.ID = C.aID AND  -- Detta är samma ID (alternativens)
      P.ID = C.qID -- Detta är samma ID (polls)

WHERE
P.Active = 1
128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)