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?
$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
Je zal een alias moeten gebruiken voor de tabellen adressen
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
Als ik onderstaande doen dan krijg ik niet de locatie en klant naam te zien als ik deze echo.
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
Logisch. Je werkt met dubbele veld namen en vermoedelijk met assoc. Het grote nadeel van werken met *
Geef alle velden op ipv * en geef de dubbele een duidelijk alias
Op basis van bovenstaande ‘tabellen’ heb ik deze query verzonnen.
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;