Hallo,
Ik heb een vraag ivm een SQLquery om meerdere tabellen te joinen.
ik heb 4 tabellen (tabel1, tabelB1, tabelB2, tabelB3) met allen een gemeenschappelijk index (id) en nog aparte velden per tabel.
In tabelA komen alle records voor.
in tabelB1, tabelB2, tabelB3 komen optioneel alle records voor.
Dus een record uit tabelA kan voorkomen in 0,1,2of 3 tabellen van de B tabellen.
VB:
id: 1 komt voor in tabelA, tabelB2 en tabelB3
id: 2 komt voor in tabelA, tabelB2
id: 3 komt voor in tabelA, tabelB1 en tabelB3
om nu alle records terug te krijgen met alle velden uit alle 4 de tabellen moet een LEFT JOIN gebruikt worden. Zover lukt alles:
SELECT * FROM tabelA
LEFT JOIN tabelB1 ON (tabelA.id = tabelB1.id)
LEFT JOIN tabelB2 ON (tabelA.id = tabelB2.id)
LEFT JOIN tabelB3 ON (tabelA.id = tabelB3.id)
Maar wat als ik nu records wil terugkrijgen met velden uit alle 4 de tabellen die nog aan EXTRA VOORWAARDEN voldoen?
SELECT * FROM tabelA
LEFT JOIN tabelB1 ON (tabelA.id = tabelB1.id)
LEFT JOIN tabelB2 ON (tabelA.id = tabelB2.id)
LEFT JOIN tabelB3 ON (tabelA.id = tabelB3.id)
WHERE tabelA.velda = 'voorwaarde1'
Dit lukt nog omdat ik enkel voorwaarden opleg uit tabelA waar alle records inzitten.
Maar als er extra voorwaarden worden opgelegd aan de andere tabellen B, doet de query niet meer het gevraagde (althans niet in MySQL5):
SELECT * FROM tabelA
LEFT JOIN tabelB1 ON (tabelA.id = tabelB1.id)
LEFT JOIN tabelB2 ON (tabelA.id = tabelB2.id)
LEFT JOIN tabelB3 ON (tabelA.id = tabelB3.id)
WHERE tabelA.velda = 'voorwaarde1'AND tabelB1.veldb1='voorwaardeB1' AND tabelB2.veldb2 = 'voorwaardeB2'
Iemand een oplossingen om het gewenste resultaat te bereiken?
Alvast bedankt!
Ik heb een vraag ivm een SQLquery om meerdere tabellen te joinen.
ik heb 4 tabellen (tabel1, tabelB1, tabelB2, tabelB3) met allen een gemeenschappelijk index (id) en nog aparte velden per tabel.
In tabelA komen alle records voor.
in tabelB1, tabelB2, tabelB3 komen optioneel alle records voor.
Dus een record uit tabelA kan voorkomen in 0,1,2of 3 tabellen van de B tabellen.
VB:
id: 1 komt voor in tabelA, tabelB2 en tabelB3
id: 2 komt voor in tabelA, tabelB2
id: 3 komt voor in tabelA, tabelB1 en tabelB3
om nu alle records terug te krijgen met alle velden uit alle 4 de tabellen moet een LEFT JOIN gebruikt worden. Zover lukt alles:
SELECT * FROM tabelA
LEFT JOIN tabelB1 ON (tabelA.id = tabelB1.id)
LEFT JOIN tabelB2 ON (tabelA.id = tabelB2.id)
LEFT JOIN tabelB3 ON (tabelA.id = tabelB3.id)
Maar wat als ik nu records wil terugkrijgen met velden uit alle 4 de tabellen die nog aan EXTRA VOORWAARDEN voldoen?
SELECT * FROM tabelA
LEFT JOIN tabelB1 ON (tabelA.id = tabelB1.id)
LEFT JOIN tabelB2 ON (tabelA.id = tabelB2.id)
LEFT JOIN tabelB3 ON (tabelA.id = tabelB3.id)
WHERE tabelA.velda = 'voorwaarde1'
Dit lukt nog omdat ik enkel voorwaarden opleg uit tabelA waar alle records inzitten.
Maar als er extra voorwaarden worden opgelegd aan de andere tabellen B, doet de query niet meer het gevraagde (althans niet in MySQL5):
SELECT * FROM tabelA
LEFT JOIN tabelB1 ON (tabelA.id = tabelB1.id)
LEFT JOIN tabelB2 ON (tabelA.id = tabelB2.id)
LEFT JOIN tabelB3 ON (tabelA.id = tabelB3.id)
WHERE tabelA.velda = 'voorwaarde1'AND tabelB1.veldb1='voorwaardeB1' AND tabelB2.veldb2 = 'voorwaardeB2'
Iemand een oplossingen om het gewenste resultaat te bereiken?
Alvast bedankt!
Laatst bewerkt: