Ik ben bezig met een pollsysteem, het verschil met de meeste polls is echter dat ik per antwoord een record aanmaak in de tabel polla(antwoorden). Dit is noodzakelijk voor andere functies, maar daar gaat het nu even niet om, voordat we een hele disussie krijgen over optimaliteit ed
In de tabel poll staan de vragen en mogelijke antwoorden, dump:
Als pollid=0 hebben we te maken met een vraag, anders staat daar een link naar de vraag. Ik neem aan dat dit duidelijk is.
Dit is de tabel waar de antwoorden in worden geplaatst:
Zoals je ziet hebben hier dus 3 mensen een antwoord gegeven, namelijk bezoekers 5,2 en 1. 2 mensen hebben 2, en één heeft 3 gestemd. Allemaal hebben ze op vraag 1 gestemd.
Nu wil ik met 1 query het volgende ophalen:
-totaal aantal stemmen op 1 antwoord
-de waarde van dat antwoord, dus bijvoorbeeld 'antwoord 1'
-de waarde van de vraag
Die eerste lukt met het onderstaand query, maar die waarden ophalen lukt op een of andere manier niet, ik krijg bij alle antwoorden 'vraag 1' als waarde?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| CREATE TABLE poll ( id tinyint(5) NOT NULL auto_increment, waarde tinytext NOT NULL, pollid tinyint(5) NOT NULL default '0', site tinyint(5) NOT NULL default '0', PRIMARY KEY (id), KEY site (site), KEY pollid (pollid) ) TYPE=MyISAM; # # Gegevens worden uitgevoerd voor tabel `poll` # INSERT INTO poll VALUES (1, 'Vraag 1', 0, 1); INSERT INTO poll VALUES (2, 'antwoord 1', 1, 1); INSERT INTO poll VALUES (3, 'antwoord 2', 1, 1); |
Als pollid=0 hebben we te maken met een vraag, anders staat daar een link naar de vraag. Ik neem aan dat dit duidelijk is.
Dit is de tabel waar de antwoorden in worden geplaatst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| CREATE TABLE polla ( id tinyint(5) NOT NULL auto_increment, aid tinyint(5) NOT NULL default '0', vid tinyint(5) NOT NULL default '0', user tinyint(5) NOT NULL default '0', datum varchar(20) NOT NULL default '', site tinyint(5) NOT NULL default '0', PRIMARY KEY (id), KEY aid (aid,site), KEY vid (vid) ) TYPE=MyISAM; # # Gegevens worden uitgevoerd voor tabel `polla` # INSERT INTO polla VALUES (2, 3, 1, 5, '2003-01-24 10:36:50', 1); INSERT INTO polla VALUES (3, 2, 1, 2, '2003-01-22 12:15:12', 1); INSERT INTO polla VALUES (4, 2, 1, 1, '2003-01-21 19:20:14', 1); |
Zoals je ziet hebben hier dus 3 mensen een antwoord gegeven, namelijk bezoekers 5,2 en 1. 2 mensen hebben 2, en één heeft 3 gestemd. Allemaal hebben ze op vraag 1 gestemd.
Nu wil ik met 1 query het volgende ophalen:
-totaal aantal stemmen op 1 antwoord
-de waarde van dat antwoord, dus bijvoorbeeld 'antwoord 1'
-de waarde van de vraag
Die eerste lukt met het onderstaand query, maar die waarden ophalen lukt op een of andere manier niet, ik krijg bij alle antwoorden 'vraag 1' als waarde?
code:
1
2
3
4
5
6
7
8
9
| SELECT COUNT( DISTINCT ( a.id ) ) AS totantw, a.vid, a.aid, p.waarde FROM polla a, poll p WHERE a.aid = p.id OR ( a.vid = p.id ) GROUP BY a.aid LIMIT 0, 30 |
[ Voor 8% gewijzigd door djluc op 25-01-2003 11:34 . Reden: verduidelijking ]