select laina.lainanro nro, nimi, laina.summa lainasumma, count(*) eriä, sum(maksuera.summa) maksut, max(eräpäivä) viimerä from asiakas, laina, maksuerä
Koodissa on kolme taulua FROM:missa. Mitä se tarkoittaa? Olen luullut, että fromissa saisi olla vain yksi taulu. Käytän Oraclea.
Voiko samaa koodia tehdä, että mainitsee vain yhden taulun fromissa ja liittää subquereillä muutta taulut.
Sami
Luultavasti toi on sallittu silloin kun on kaikki taulun sarakkeet varmasti samat, ja miksikäs ei kelpaisi tuo tuossa kyseisissä taulukoissa jonka lauseke tuossa on.
Jos tauluja on monta, kyselyn tulostaulu muodostetaan niin, että siinä ovat kaikki tavat valita kustakin taulusta yksi rivi.
Esimerkki: Taulussa "hlot" on henkilöiden nimiä ja asuinmaita. Taulussa "maat" on maiden nimiä ja maanosia.
nimi maa ------------------------ Chen Kiina Jean Ranska Maria USA Paul Ranska
nimi maanosa ------------------------ Kiina Aasia Ranska Eurooppa USA P-Amerikka
Tauluissa on 4 ja 3 riviä, joten rivien eri yhdistelmiä on 12:
SELECT * FROM hlot, maat
hlot.nimi hlot.maa maat.nimi maat.maanosa ------------------------------------------------ Chen Kiina Kiina Aasia Chen Kiina Ranska Eurooppa Chen Kiina USA P-Amerikka Jean Ranska Kiina Aasia Jean Ranska Ranska Eurooppa Jean Ranska USA P-Amerikka Maria USA Kiina Aasia Maria USA Ranska Eurooppa Maria USA USA P-Amerikka Paul Ranska Kiina Aasia Paul Ranska Ranska Eurooppa Paul Ranska USA P-Amerikka
Yleensä kuitenkin kannattaa rajata tulostaulun rivejä jollain ehdolla:
SELECT hlot.nimi, maat.maanosa FROM hlot, maat WHERE hlot.maa = maat.nimi
hlot.nimi maat.maanosa ------------------------ Chen Aasia Jean Eurooppa Maria P-Amerikka Paul Eurooppa
Näin saatiin selville kahden taulun avulla, missä maanosassa kukin henkilö asuu.
Kiitos Antti! Tuo selkeytti paljon.
Sami
Aihe on jo aika vanha, joten et voi enää vastata siihen.