Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL: Vaihteleva määrä liitoksia samaan tauluun

jaska jokunen [24.01.2013 15:49:06]

#

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!

Metabolix [24.01.2013 15:59:24]

#

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.

jaska jokunen [25.01.2013 08:25:07]

#

Toimii tuolla mainitsemallasi tavalla! Kiitos paljon! Vähän soveltamista vaati, kun oli niin paljon dataa, mutta TOIMII!

Vastaus

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

Tietoa sivustosta