Hei,
Ongelmani on saada tulostettua kannasta tietoa, jossa on ns. eri määrä tuloksia:
Jospa tämä kuva selventäisi:
Henkilö | Kentta | Tulos ------------------------------ Tarzan 1 234 Tarzan 2 987 Jane 1 567 Jane 2 456 Jane 3 765 Jane 4 876
Tuloste onnistuu osittain, eli tulostaa seuraavanlaisesti:
..... Kentta1 Kentta2 Kentta3 Kentta4 Jane 567 456 765 876
Tarzania ei tulosteessa näy, koska hänellä ei ole kenttiä 3 ja 4 tallentunut. Tietokantaa en voi muuttaa, se tallentaa tiedot noin. Mutta tulostus kuitenkin pitäisi toimia näin, vaikka esimerkin Tarzan ei ole käynyt kenttiä 3 ja 4 ollenkaan:
..... Kentta1 Kentta2 Kentta3 Kentta4 Tarzan 234 987 0 0 Jane 567 456 765 876
Jos täällä joku asiantuntijoista osaisi jelpata!
-jj
Mod. lisäsi kooditagit!
Käytä LEFT JOIN -lauseita.
SELECT t0.henkilo, IFNULL(t1.tulos, 0) AS kentta1, IFNULL(t2.tulos, 0) AS kentta2 FROM taulu AS t0 LEFT JOIN taulu AS t1 ON t0.henkilo = t1.henkilo AND t1.kentta = 1 LEFT JOIN taulu AS t2 ON t0.henkilo = t2.henkilo AND t2.kentta = 2 GROUP BY t0.henkilo
Jos mahdollisten kenttien määrä ei ole ennalta tiedossa tai on kovin suuri, ei ole oikein muuta neuvoa kuin hakea rivit alkuperäisessä muodossa ja yhdistellä sitten jälkikäteen. Sitä ratkaisua kannattaa kyllä muutenkin harkita.
Toimii tuolla mainitsemallasi tavalla! Kiitos paljon! Vähän soveltamista vaati, kun oli niin paljon dataa, mutta TOIMII!
Aihe on jo aika vanha, joten et voi enää vastata siihen.