Kysyin tätä jo aikasemmin aiheessani "PHP: Montako kertaa sama nimi esiintyy", mutta en saanut tällä uudella kysymyksellä vastausta. Jos tämä sitten tuottaisi tulosta. Viesti:
Mikä kysely siis, jos tietokannoissa on vaikka näin:
1 = Tarja Halonen 2 = Sauli Niinistö 3 = Martti Ahtisaari KYSYMYS1 | KYSYMYS2 | KYSYMYS3 jne.. ---------+----------+---------- 1 | 1 | 3 ---------+----------+---------- 1 | 2 | 2 ---------+----------+---------- 2 | 2 | 3 ---------+----------+---------- 3 | 1 | 3 Ja jatkuu....
Pitäisi koodin ilmoittaa:
KYSYMYS 1: Tarja Halonen KYSYMYS 2: Tasoissa: Tarja Halonen ja Sauli Niinistö KYSYMYS 3: Martti Ahtisaari
Eli jos kaksi esimerkiksi tasoissa, niin näyttää molemmat tai muuten se yksi nimi, joka hohtaa. Kyse on "vaali"järjestelmästä. Ja tietokantaan laitetaan henkilö numerona, eli 1 = Tarja Halonen jne. joten numerot pitäisi myös muuntaa. Tämä ei ole kuitenkaan ongelmani, vaan en oikeen ole tajunnut, millä voisin hakea kuka/ketkä on ensimmäisellä sijalla.
No jos nyt ajatellaan että nuo vaihtoehdot on vaikka taulussa
Taulu: Vaihtoehto
Kenttä: Nro
Kenttä: Nimi
Ja tuon vastaustaulusi nimi olisi Vastaus niin
SELECT Count(V.*) KPL, N.Nimi FROM Vastaus V JOIN Vaihtoehto N ON V.KYSYMYS1 = N.Nro GROUP BY N.Nro, N.Nimi ORDER BY Count(V.*) DESC
Sitten vaan vastaava kysely jokaiselle kysymykselle.
Tuo tyyli tehdä vastaustaulu on kylläkin huono, kun jokaiselle vastaukselle on oma sarake. Suosittelen seuraavaa vaihtoehtoa:
Taulu: Vastaus
Kenttä: Sarja (int) tms
Kenttä: Kysymys (int)
Kenttä: Vastaus (int)
Eli esim viestissäsi oleva data olisi
Sarja Kysymys Vastaus 1 1 1 1 2 1 1 3 3 2 1 1 2 2 2 2 3 2 3 1 2 3 2 2 3 3 3 4 1 3 4 2 1 4 3 3
Tällä tavalla kaikkien tai haluttujen kysymysten tuloksetkin saisi haettua helposti yhdellä kyselyllä.
SELECT V.Kysymys, Count(V.*) KPL, N.Nimi FROM Vastaus V JOIN Vaihtoehto N ON V.Vastaus = N.Nro GROUP BY V.Kysymys, N.Nro, N.Nimi ORDER BY V.Kysymys, Count(V.*) DESC
Tällaisen kyselyn perusteella toivomasi muotoilu on helppo tehdä PHP:llä.
Kiva idea toi viimenen, toisaalta toi kysely on pyörimässä jo (tuolla kertomallani tekniikalla). Pitää sitten tehä monta kyselyä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.