Deze zijn in deze volgorde ook met elkaar verbonden mbv id's, een regio heeft een x aantal bedrijven en een bedrijf heeft een x aantal afbeeldingen.
Dat is allemaal niet zo moeilijk. Maar nu wil ik het éigenlijk zo ophalen dat ik een array krijg die als volgt is opgebouwd:
Alleen dan meer regio's, meer bedrijven en meer afbeeldingen natuurlijk.
Ik denk dat dit niet binnen 1 query kan, maar ik vraag mij af of ik nou echt eerst alle regio's moet ophalen, dan een query om alle bedrijven op te halen en dan alsnog een query om alle afbeeldingen op te halen.
Is er iemand die mij uit de brand kan helpen hoe dit op de beste manier gaat?
Het gaat erom dat ik alle regio's wil uitlezen, en dan per regio de bedrijven, en per bedrijf de afbeeldingen.
SELECT regios.regio_id, bedrijven.bedrijf_id, afbeeldingen.afbeelding_id FROM regios LEFT JOIN bedrijven ON [bedrijven aan regios koppelen] LEFT JOIN afbeeldingen [afbeeldingen aan bedrijven koppelen]
SELECT regios.regio_id, bedrijven.bedrijf_id, afbeeldingen.afbeelding_id FROM regios LEFTJOIN bedrijven ON[bedrijven aan regios koppelen]LEFTJOIN afbeeldingen [afbeeldingen aan bedrijven koppelen]
Dan zal je zoiets krijgen:
regio1,bedrijf1,afbeelding1
regio1,bedrijf1,afbeelding2
regio2,bedrijf2,afbeelding3
regio3,bedrijf3,afbeelding4
regio3,bedrijf3,afbeelding5
regio3,bedrijf4,afbeelding6
Als je dat resultaat slim afgaat met een while kun je het in het gewenste formaat krijgen.
Ik wist niet zeker of het met Joins kon, wel dus.
Het koste wel aardig wat aanpassingen in de while() lus, het is als volgt geworden.
Best lelijk die grote lappen, maar kan me niet bedenken hoe het handiger/mooier kan.
Volgens mij kan het niet echt korter dan dit. Het is op deze manier ongetwijfeld sneller dan dat je geneste queries gaat uitvoeren. Alleen is het wel zonde dat je heel vaak dezelfde regio en user zult ophalen (dat is bij genest niet nodig), maar ik denk echt dat dit de beste methode is.