Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MYSQL-haku PHP:llä

mattisimula [18.12.2006 16:54:39]

#

Eli ongelma on seuraava:

Minulla on arvostelusivusto, johon täytyy luoda kaksi eri taulukkoa, toiseen tulee arvostelut ja toiseen arvostelijoiden tietoja. Miten saan tulostettua tiedot PHP:llä, siten että tulostan jäsentietotaulusta ensin jäsenten tiedot ja samaan tulostukseen tarvitsen arvostelutaulusta sarakkeesta "arvostelija" laskettua jokaisen arvostelijan kohdalta arvostelujen määrän. Kysely pitäisi tehdä yhdellä mysql-kyselyllä, eli kyselyjen tuloksia ei saa tallentaa php-taulukkoon. Toivottavasti "tehtävänanto" ei ollut liian monimutkaisesti ilmaistu.

ajv [18.12.2006 17:02:48]

#

Jotakuinkin näin:

SELECT
	U.id,
	U.nimi,
	COUNT( * ) AS Arvosteluja
FROM
	Users AS U
LEFT JOIN
	Reviews AS R ON U.id = R.uid
WHERE
	U.id = 1
GROUP BY
	U.id

Kysy jos ei esimerkki auennut.

feenix [18.12.2006 17:08:26]

#

Tuo on virheellinen. Koska teet left joinin annetaan joka tapauksessa jokaiselle arvostelijalle yksi rivi. Tällöin count(*) laskenee arvoksi 1 vaikka yhtään arvostelua ei olisikaan.

Sen sijaan count(r.uid) antaisi ainakin MS SQL Serverissä nollan tässä tapauksessa. Varma en ole mikä on oikea toimintatapa eikä ole mysliä edessä että näkisin miten se toimii.

(Myöskin tietysti where-ehto pois jos halutaan enemmän kuin yksi arvostelija, alkuperäiselle vinkiksi)

ajv [18.12.2006 17:54:34]

#

Aivan, COUNT( r.jokusarake ) AS Arvosteluja, enpä ajatellut ihan loppuun asti.

mattisimula [19.12.2006 16:21:53]

#

Kiitoksia vastauksista!
Miten ko. haku tulostettaisiin?
Olen itse käyttänyt "whileä"

while($rivi = mysql_fetch_array($haku ))
{
print $rivi['merkki'];

eli mitä kirjoitetaan merkki-tekstin kohdalle?

Niko [19.12.2006 17:11:42]

#

id, nimi, Arvosteluja sen mukaan mitä haluat...

print_r/vardump on hyödyllinen kun ei tiedä mitä tulee.

Vastaus

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

Tietoa sivustosta