ik wilde graag eens wat weten
het gaat over 3 tabellen
dus een query met 2 inner join
nu mijn vraag
speelt de volgorde van de select een rol?
en hoe word de volgorde van de inner joint bepaald
dus welke moet in de eerste plaats worden geplaatst, de gemeenschappelijke tabel eerst?
of eerst de tabel waarin de andere gegevens staan
het is mogelijks een domme vraag
maar ik zit er nu eenmaal mee
Eigenlijk moet je het zien dat het van binnen naar buiten wordt gejoined, je hebt nu bijv 3 tabellen waarbij t2 de tabel is waarin beide voorkomen:
Het kan qua volgorde wel anders, maar zo is de opbouw van de query (vind ik) het gemakkelijkst. Deze kan je zien als een losse tabel, waar je weer wat mee kan vergelijken, dus dan bouw je die volgende JOIN eromheen.
Je maakt nu eerst zeg maar de join query voor tabel2 en tabel3, werkt die ga je verder (zo doe je stap voor stap en kan je fouten eerder terugvinden, omdat je met kleine stappen werkt)
Stap 1:
SELECT
t2.kolomnaam
FROM
tabel2 AS t2
INNER JOIN
tabel3 AS t3
ON
t3.kol = t2.kolom
Werkt het bovenstaande, gaan we naar stap 2:
[ul]
[li]
Zet een ( in de bovenstaande query op voor de eerstgeselecteerde tabelnaam, na de FROM en sluit de query af met een )
[/li]
[li]
Vervolgens zet je de nieuwe te selecteren tabel na de FROM, en pas je de te selecteren kolom aan.
[/li]
[li]
Nu zet je er een INNER JOIN voor het geopende (
[/li]
[li]
Ten slotte zet je na het gesloten ) het deel met ON neer
[/li]
[/ul]
Dat komt er dan zo uit te zien:
Stap 2:
SELECT
t1.kolomnaam
FROM
tabel1 AS t1
INNER JOIN
(tabel2 AS t2
INNER JOIN
tabel3 AS t3
ON
t3.kol = t2.kolnaam)
ON t3.kol = t1.kolomnaam
Een duidelijke uitleg Robert, houd alleen wel de foreign key constraints op de tabellen in de gaten. Het hoeft namelijk niet per se zo te zijn dat t3 een FK constraint op t2 heeft, dat kan net zo goed op t1 zijn. In dat geval komt je query er natuurlijk iets anders uit te zien ;)