Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SQL & PHP: Montako kertaa numero esiintyy

joah [23.12.2013 15:02:25]

#

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.

Grez [23.12.2013 15:11:53]

#

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ä.

joah [23.12.2013 15:41:13]

#

Kiva idea toi viimenen, toisaalta toi kysely on pyörimässä jo (tuolla kertomallani tekniikalla). Pitää sitten tehä monta kyselyä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta