3 tabellen 1 query
Ik ben al een middag aan het stoeien met de volgende vraag. Is het mogelijk om met 1 query informatie te halen uit drie tabellen en deze te sorteren.
De volgende items staan in de DB
tabel 1 - persoon
id, voornaam, achternaam,
tabel 2 - werkdag
id, dag_id, persoon_id, tijd_start, tijd_stop
tabel 3 - rooster
id, dag_id, persoon_id, tijdstart, tijdstop
De data die ik wil hebben is als volgt. Ik wil elke naam met daarbij de data uit tabel 2 en tabel 3. Het is vaak zo dat in beide tabellen een match zit. Maar het kan ook voorkomen dat er in tabel 2 wel een match zit maar in 3 niet. Het kan ook voorkomen dat er in tabel 2 of 3 meerdere matches zitten. Deze matches wil ik allemaal in een tabel weergeven.
Wellicht in wat jip en janneke taal uitgelegd maar ik hoop dat iemand mij verder kan helpen. Bovenstaande code heb ik zelf bij elkaar gesprokkeld maar geeft niet de data weer zoals ik dat graag wil. Hij geeft namelijk nu niet de gevonden matches uit de tabel werkdag weer ...
Gewijzigd op 31/07/2015 23:36:21 door Bob van Enk
Quote:
Maar het kan ook voorkomen dat er in tabel 2 wel een match zit maar in 3 niet.
Dan lijkt het mij beter om ook op tabel 3 een LEFT JOIN te doen? De waarden voor kolommen uit tabel 3 zijn dan NULL.
Dat zou dan trouwens inhouden dat iemand niet ingeklokt heeft op een dag dat deze zou moeten werken ofzo? :)
Heb je gekeken of $dag_id wel klopt? Dat luistert natuurlijk nogal nauw.
Welke informatie is voor jou uiteindelijk interessant om uit deze data te halen?
naam: | rooster: | ingeklokt:
1 adje | 10:00 - 18:00 | 10:00 - 18:00
2 klaas | - | 09:00 - 13:00
3 klaas | - | 18:00 - 21:00
4 Leo | 18:00 - 21:00 | -
5 pietje | 10:00 - 18:00 | 10:00 - 18:00
Gewijzigd op 31/07/2015 20:59:23 door Bob van Enk
Bob, volgens mij krijg je dat als je doet wat Thomas zegt op tabel 3 ook een LEFT JOIN
Toevoeging op 31/07/2015 22:40:23:
Ik heb WHERE werkdag.tijdstop != '0' OR inklokken.tijd_stop != '0' toegevoegd en het werkt!!! Bedankt!