2 joins zelfde tabel
BOEKINGEN
boeking_id
boeking_datum
boeking_naam
ADRESSEN
adres_id
adres_naam
adres_plaats
BOEKINGEN_ADRESSEN
oa_id
boeking_id
adres_id
BOEKINGEN_LOCATIES
bl_id
boeking_id
locatie_id
Ik heb alle adressen van locaties en klanten in 1 tabel staan.
Maar hoe kan ik een join doen met beide tabellen? Onderstaande zou ik doen maar werkt niet. Hoe kan ik dit oplossen of moet ik toch een extra tabel met LOCATIES maken?
Code (php)
1
2
3
4
5
2
3
4
5
$sql = "SELECT * FORM boekingen
LEFT JOIN boekingen_adressen ON boekingen_adressen.boeking_id = boekingen.boeking_id
LEFT JOIN adressen ON adressen.adres_id = boekingen_adressen.adres_id
LEFT JOIN boekingen_locaties ON boekingen_locaties.boeking_id = boekingen.boeking_id
LEFT JOIN adressen ON adressen.adres_id = boekingen_locaties.adres_id
LEFT JOIN boekingen_adressen ON boekingen_adressen.boeking_id = boekingen.boeking_id
LEFT JOIN adressen ON adressen.adres_id = boekingen_adressen.adres_id
LEFT JOIN boekingen_locaties ON boekingen_locaties.boeking_id = boekingen.boeking_id
LEFT JOIN adressen ON adressen.adres_id = boekingen_locaties.adres_id
Code (php)
1
2
3
4
5
2
3
4
5
SELECT * FORM boekingen
LEFT JOIN boekingen_adressen ON boekingen_adressen.boeking_id = boekingen.boeking_id
LEFT JOIN adressen a1 ON a1.adres_id = boekingen_adressen.adres_id
LEFT JOIN boekingen_locaties ON boekingen_locaties.boeking_id = boekingen.boeking_id
LEFT JOIN adressen a2 ON a2.adres_id = boekingen_locaties.adres_id
LEFT JOIN boekingen_adressen ON boekingen_adressen.boeking_id = boekingen.boeking_id
LEFT JOIN adressen a1 ON a1.adres_id = boekingen_adressen.adres_id
LEFT JOIN boekingen_locaties ON boekingen_locaties.boeking_id = boekingen.boeking_id
LEFT JOIN adressen a2 ON a2.adres_id = boekingen_locaties.adres_id
LEFT JOIN adressen AS adres_klant
en
LEFT JOIN adressen AS adres_locatie
Zodat je je niet blind zit te staren op "was a2 nu van de boeking of de klant?"
Code (php)
1
2
3
4
5
2
3
4
5
SELECT *, adres_locatie.adres_naam AS locatieadres, adres_klant.adres_naam AS klantadres FORM boekingen
LEFT JOIN boekingen_adressen ON boekingen_adressen.boeking_id = boekingen.boeking_id
LEFT JOIN adressen AS adres_klant ON adres_klant.adres_id = boekingen_adressen.adres_id
LEFT JOIN boekingen_locaties ON boekingen_locaties.boeking_id = boekingen.boeking_id
LEFT JOIN adressen AS adres_locatie ON adres_locatie.adres_id = boekingen_locaties.adres_id
LEFT JOIN boekingen_adressen ON boekingen_adressen.boeking_id = boekingen.boeking_id
LEFT JOIN adressen AS adres_klant ON adres_klant.adres_id = boekingen_adressen.adres_id
LEFT JOIN boekingen_locaties ON boekingen_locaties.boeking_id = boekingen.boeking_id
LEFT JOIN adressen AS adres_locatie ON adres_locatie.adres_id = boekingen_locaties.adres_id
Geef alle velden op ipv * en geef de dubbele een duidelijk alias
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
bk.boeking_id AS bkbi,
bk.boeking_datum,
bk.boeking_naam,
ad.adres_id AS adai,
ad.adres_naam,
ad.adres_plaats,
bl.boeking_id AS blbi
FROM boekingen bk
JOIN boekingen_adressen ba
ON ba.boeking_id = bk.boeking_id
JOIN adressen ad
ON ad.adres_id = ba.adres_id
JOIN boekingen_locaties bl
ON bl.boeking_id = bk.boeking_id;
bk.boeking_id AS bkbi,
bk.boeking_datum,
bk.boeking_naam,
ad.adres_id AS adai,
ad.adres_naam,
ad.adres_plaats,
bl.boeking_id AS blbi
FROM boekingen bk
JOIN boekingen_adressen ba
ON ba.boeking_id = bk.boeking_id
JOIN adressen ad
ON ad.adres_id = ba.adres_id
JOIN boekingen_locaties bl
ON bl.boeking_id = bk.boeking_id;
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$sql = "
SELECT * FROM boekingen
LEFT JOIN boekingen_adressen USING(boeking_id)
LEFT JOIN adressen USING(adres_id)
LEFT JOIN boekingen_locaties USING(boeking_id)
-- etc
";
SELECT * FROM boekingen
LEFT JOIN boekingen_adressen USING(boeking_id)
LEFT JOIN adressen USING(adres_id)
LEFT JOIN boekingen_locaties USING(boeking_id)
-- etc
";
Dit lost niet meteen jouw vraag op, maar je bent van al die tabelnamen/-aliassen af.
Opmerking: er stond FORM ipv FROM in je query.
Gewijzigd op 22/03/2022 20:04:07 door Jan Koehoorn