Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL ja useamman taulun tietojen yhdistäminen

Jokkeri [07.02.2004 10:20:06]

#

Miten pystyn yhdistelemään kolmen taulun tietoja SQL lauseella?

taulut (joissa kentät): Laskut(laskuno, asiakasno), Laskurivit(laskuno, tuoteno), Asiakkaat(numero, nimi)

Haluaisin että recordset:iin tulee Laskut(laskuno), Laskurivit(tuoteno), Asiakkaat(nimi)

Tiedän että kahden taulun liitokset onnistuvat lauseella
SELECT Laskut.laskuno, Laskurivit.tuoteno FROM Laskut LEFT JOIN Laskurivit ON Laskut.laskuno=Laskurivit.laskuno WHERE jne...

Juhis [08.02.2004 02:10:26]

#

Kysymyksesi varmasti liittyy MySQL:ään.
Käytä useampaa LEFT JOIN:a, tai sitten älä ;) Riippuu ihan että haluatko että kaikki taulut on jotenkin yhteydessä toisiinsa. En tiedä miten toimii muissa SQL tietokannoissa, kokemusta vain MySQL:stä.

Esim 1.
SELECT s.data AS sdata, d.data AS ddata, w.data AS wdata FROM table AS s, table2 AS d LEFT JOIN table3 AS w ON w.data=s.data WHERE s.data='infoa' AND d.data='more info'

Esim 2.
SELECT s.data AS sdata, d.data AS ddata, w.data AS wdata FROM table AS s LEFT JOIN table2 AS d ON d.data=s.data LEFT JOIN table3 AS w ON w.data=d.data WHERE s.data='infoa'


Ratkaisuja on useita, tässä kaksi useiten käytettyä.

eakem [08.02.2004 20:11:04]

#

Tämä toimii ainakin Oraclessa ja Accessissa
(veikkaan että myös Mysql:ssa)

select a.laskuno, b.tuoteno, c.nimi
from Asiakkaat c, Laskurivit b, Laskut a
where c.numero=a.asiakasno and b.laskuno=a.laskuno

Oletin, että Asiakkaat.numero viittaa Laskut.asiakasno -kenttään.

Juhis [09.02.2004 18:45:14]

#

MySQL:ssä tuo sinun esimerkkisi toimii, muttei tuollaisenaan. Vaan jos tauluille annetaan jokin toinen nimi, lyhenne, pitää sitten pistää "Asiakkaat AS c" jnejne

Vastaus

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

Tietoa sivustosta