Het gaat om het volgende: ik heb een relationele database en wil van verschillende tabellen informatie bij elkaar vegen in 1 query. Nu doe ik dat met 3 verschillende (op zich al betrekkelijk ingewikkelde) queries en voeg de zooi uiteindelijk bij elkaar met PHP.
Dat moet makkelijker kunnen!
Even wat uitleg.
1. Ik heb een stel personen met aanverwantte informatie. Dit staat in 1 tabel.
2. Daarnaast behoren die personen tot 1 of meer secties (hier heb ik al eerder het eea. over gevraagd). De secties staan in een tabel en de link tussen de personen en de secties staan ook in een aparte tabel.
3. Vervolgens hebben al die personen ook braaf een studie gedaan. De studies en de plaatsen waar die studies te volgen zijn staan in 2 aparte tabellen en die informatie wordt aan de personen gekoppeld in weer een andere link-tabel.
4. Al die personen werken op een bepaalde lokatie. Die lokaties staan in een aparte tabel en in de personen tabel staat er een id-link naartoe. Dit is gelukkig een 1-op-1'tje.
De tabellen zijn dus vrij simpel:
personen
--------
id
voornaam
achternaam
id_stad
personen_opleiding
------------------
id_persoon
id_studie
id_plaats
studies
-------
id
studie
studie_plaatsen
---------------
id
plaats
secties
-------
id
sectie
sectieleden
-----------
id_persoon
id_sectie
steden
------
id
plaats
Dit zijn zo'n beetje alle tabellen. Om de studies+plaatsen aan een persoon te hangen heb ik zo'n soort query:
code:
1
2
3
4
5
| select id_persoon,studie,plaats from personen_opleiding,studies,studie_plaatsen where personen_opleiding.id_studie=studies.id and personen_opleiding.id_plaats=studie_plaatsen.id order by id_persoon |
Om de id's van de secties (namen heb ik hier niet perse nodig) aan de personen te binden, heb ik de volgende query:
code:
1
2
| select id,id_persoon from sectieleden,secties where sectieleden.id_sectie=secties.id order by id_persoon |
En uiteindelijk wordt de rest van de persoons-informatie opgehaald met deze query:
code:
1
2
| select * from personen,steden where steden.sid=personen.id_stad |
In de loop waarmee de data van die laatste query wordt opgehaald veeg ik ook de andere info erbij en plaats het geheel in 1 array.
Nou heb ik het eea gelezen over join's, maar ik kom er niet helemaal uit. Iemand enig idee hoe dit te optimaliseren is?
[ specs ] [ Tweaker gallery ]