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.
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.
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)
Aivan, COUNT( r.jokusarake ) AS Arvosteluja, enpä ajatellut ihan loppuun asti.
Kiitoksia vastauksista!
Miten ko. haku tulostettaisiin?
Olen itse käyttänyt "whileä"
eli mitä kirjoitetaan merkki-tekstin kohdalle?
id, nimi, Arvosteluja sen mukaan mitä haluat...
print_r/vardump on hyödyllinen kun ei tiedä mitä tulee.
Aihe on jo aika vanha, joten et voi enää vastata siihen.