Kolme taulukkoa:
värit (id, nimi)
1, musta
2, valkoinen
3, punainen
henkilöt (id, nimi, lempiväri_id)
1, Matti, 1
2, Jussi, 1
3, Liisa, 2
4, Katri, 3
kaverit (id, poika_id, tyttö_id)
1, 2, 4
2, 1, 3
Pitäisi saada ulos data:
Poikanimi, PoikaLempiväri, Tyttö, TyttöLempiväri.
Miten Tämä onnistuu?
värit (id, nimi)
1, musta
2, valkoinen
3, punainen
henkilöt (id, nimi, lempiväri_id)
1, Matti, 1
2, Jussi, 1
3, Liisa, 2
4, Katri, 3
kaverit (id, poika_id, tyttö_id)
1, 2, 4
2, 1, 3
Pitäisi saada ulos data:
Poikanimi, PoikaLempiväri, Tyttö, TyttöLempiväri.
Miten Tämä onnistuu?
Vastaukset 5
Vanhimmat
En saa millään toimimaan, help !!!
select
h1.nimi,
v1.nimi,
h2.nimi,
v2.nimi
from
henkilot h1,
henkilot h2,
varit v1,
varit v2,
kaverit k
where
k.poika_id = h1.id and
h1.lempivari_id = v1.id and
k.tytto_id = h2.id and
h2.lempivari_id = v2.id;
Hakeeko se myös sellaiset nimet joilla lempiväri_id on NULL tai 0
hae. Tässä oletin, että lempiväri on olemassa.
...outer joineja.
Yleensäkin kannattaa taulujen välisissä relaatioissa käyttää where lauseen sijasta INNER ja OUTER JOINEJA.
Esim. SELECT xx FROM table1 LEFT OUTER JOIN table2 ON table1.nimi=table2.nimi
->tämä palauttaa kaikki table1:stä vaikka kyseistä arvoa ei olisikaan table2:ssa.