Left Joins

Status
Niet open voor verdere reacties.

Pickleman

Gebruiker
Lid geworden
6 jul 2006
Berichten
31
Hoi,

Ik heb de volgende query:

SELECT A.ID, A.Datum, A.aanlevering, B.Naam as BNaam, A.IDc, C.Naam as CNaam, A.Reden, E.Naam as ENaam
FROM A, B, C, D, E
WHERE A.IDb = B.ID
AND A.IDc = C.ID
AND A.IDd = D.ID
AND A.IDe = E.ID
AND A.Datum >= "2000-01-01"
AND A.Datum <= "2000-12-31"
AND A.Code NOT IN (0,1,2,4)
Order BY A.IDC

Nu is deze query ok, maar moeten de velden IDb, IDc, IDd en IDe gevuld zijn, anders wordt het desbetreffende record niet meegenomen

Nu moet ik denk ik Left Joins gaan gebruiken, maar:
A) da's m'n sterkste kant niet
B) zeker niet met zoveel tabellen en
C) met nog de voorwaarde dat het binnen een bepaalde datum moet vallen en de A.Code een aantal waarden niet mag bevatten.

Kan iemand helpen?

Groetjes Peter
 
Kan je de voorwaarden niet gewoon toevegen ?

SELECT A.ID, A.Datum, A.aanlevering, B.Naam as BNaam, A.IDc, C.Naam as CNaam, A.Reden, E.Naam as ENaam
FROM A, B, C, D, E
WHERE A.IDb = B.ID
AND A.IDc = C.ID
AND A.IDd = D.ID
AND A.IDe = E.ID
AND A.Datum >= "2000-01-01"
AND A.Datum <= "2000-12-31"
AND A.Code NOT IN (0,1,2,4)
AND A.IDb NOT NULL
AND A.IDc NOT NULL
AND A.IDd NOT NULL
AND A.IDe NOT NULL

Order BY A.IDC

--Johan
 
Kan je de voorwaarden niet gewoon toevegen ?

<* knip*>

--Johan


Lijkt me niet...

Als geldt:

Code:
A.IDb = B.ID

dan geldt ook automatisch:

Code:
A.IDb NOT NULL

En analoog bij de andere IDx velden...

De bedoeling is dat als bv A.IDd niet is ingevuld dat dat record wel meegenomen wordt, maar dat dat veld leeggelaten wordt. Ik heb ooit zoiets gedaan met twee tabellen en dat ging met een LEFT JOIN. Maar ik kom er nu niet uit hoe ik het met meerdere (in dit geval 5) tabellen moet doen
 
Zoiets?

Code:
SELECT A.ID, A.Datum, A.aanlevering, B.Naam as BNaam, A.IDc, C.Naam as CNaam, A.Reden, E.Naam as ENaam

from

(select id, datum, aanlevering, idc, reden 
 from A
 where datum >= "2000-01-01"
       and datum <= "2000-12-31"
       and code not in (0,1,2,4)) a

left join

(select id, naam from B) b
on a.idb = b.id

left join

(select id, naam from C) c
on a.idc = c.id

left join

(select id from D) d
on a.idd = d.id

left join

(select id, naam from E) e
on a.iede = e.id

Order BY A.IDC
 
Sorry voor de late reactie, maar het werkte inderdaad. Mijn dank nog daarvoor.
Wegens drukte en ziekte was ik vergeten deze vraag af te melden.

Nogmaals bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan