many to many join
Hoe kan ik ervoor zorgen dat afd_subafdeling.afdeling_id en afd_subafdeling.subafdeling_id
worden gejoint met tabel afdeling en subafdeling en dat ik de afdelingsnaam en subafdelingsnaam krijg?
afdeling
subafdeling
afd_subafdeling
FROM afdeling a
RIGHT JOIN afd_subafdeling as ON as.afdeling_id = a.if
RIGHT JOIN subafdeling s on as.subafdeling_id = s.id
Give or take
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON as.afdeling_id = a.id RIGHT JOIN subafdeling s on as.subafdeling_id = s.id L' at line 3
Jacco Engel op 15/05/2014 10:25:23:
SELECT a.afd_naam , s.subaf_naam
FROM afdeling a
RIGHT JOIN afd_subafdeling as ON as.afdeling_id = a.if
RIGHT JOIN subafdeling s on as.subafdeling_id = s.id
Give or take
FROM afdeling a
RIGHT JOIN afd_subafdeling as ON as.afdeling_id = a.if
RIGHT JOIN subafdeling s on as.subafdeling_id = s.id
Give or take
SELECT a.afd_naam , s.subaf_naam
FROM afdeling a
RIGHT JOIN afd_subafdeling tas ON as.afdeling_id = a.if
RIGHT JOIN subafdeling s on tas.subafdeling_id = s.id
De alt die ik aan de afd_subafdeling had gegeven (as) is een gereserveerd woord in SQL. Srry nog maar 3 bakken kofie op en dan maak je dat soort fouten
Opvallend dat je dit met een RIGHT JOIN doet trouwens. Je weet dat je dan wel alle subafdelingen krijgt, ook die niet gelinked zijn aan een afdeling? (indien van toepassing uiteraard)
Erwin H op 15/05/2014 10:37:43:
Opvallend dat je dit met een RIGHT JOIN doet trouwens. Je weet dat je dan wel alle subafdelingen krijgt, ook die niet gelinked zijn aan een afdeling? (indien van toepassing uiteraard)
Toevoeging op 15/05/2014 10:40:18:
Ik heb het al, het moet gewoon join zijn.
SELECT a.afd_naam, s.subaf_naam
FROM afdeling a
JOIN afd_subafdeling tas ON tas.afdeling_id = a.id
JOIN subafdeling s ON tas.subafdeling_id = s.id;
Thanks allemaal!!
Het werkt namelijk zo dat je bij een LEFT JOIN uit gaat van de 'linker' tabel (in jouw geval de afdelingen, die wordt als eerste opgenomen in de FROM clause). Van die linker tabel krijg je alle rijen. Van de 'rechter' tabel (in jouw geval de subafdelingen en de koppel tabel) krijg je alleen de rijen die daadwerkelijk gelinkt zijn aan de linker tabel. Bij een RIGHT JOIN werkt het net andersom, dan krijg je dus alle sub afdelingen en alleen de afdelingen die eraan gelinkt zijn.
In dit soort gevallen is het 99 van de 100 keer zo dat je een LEFT JOIN nodig hebt en geen RIGHT JOIN. Vandaar dat het nogal opvallend was.
P.S. Bij een INNER JOIN, om het rijtje compleet te maken, krijg je alleen de rijen waarvoor in beide tabellen een record bestaat.
Erwin H op 15/05/2014 10:37:43:
Opvallend dat je dit met een RIGHT JOIN doet trouwens. Je weet dat je dan wel alle subafdelingen krijgt, ook die niet gelinked zijn aan een afdeling? (indien van toepassing uiteraard)
Ja dat weet ik maar leek me in een afdeling subafdeling situatie niet echt relevant :P
Rare redenatie als je het mij vraagt....
Erwin H op 15/05/2014 10:58:40:
Rare redenatie als je het mij vraagt....
Dan is het maar goed dat ik het je niet vraag
Edit , Erwin heb je even gemessaged om het een en ander recht te zetten , maar wil het topic niet kapen of vullen met dingen waar TS weinig aan heeft
Gewijzigd op 15/05/2014 11:13:35 door Jacco Engel
Gewijzigd op 15/05/2014 11:15:19 door Erwin H