3 tabellen 1 query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bob van Enk

Bob van Enk

31/07/2015 20:22:05
Quote Anchor link
Goedenavond!

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
 
PHP hulp

PHP hulp

16/11/2024 10:37:57
 
Thomas van den Heuvel

Thomas van den Heuvel

31/07/2015 20:50:55
Quote Anchor link
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?
 
Bob van Enk

Bob van Enk

31/07/2015 20:58:43
Quote Anchor link
Ja, dat klopt. Als iemand bijvoorbeeld ziek is klokt deze persoon niet in. Maar hiervoor klokt wel iemand anders in. Beide resultaten wil ik weergeven in een tabel, voorbeeld:

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
 
Daan Slagter

Daan Slagter

31/07/2015 21:06:26
Quote Anchor link
Bob, volgens mij krijg je dat als je doet wat Thomas zegt op tabel 3 ook een LEFT JOIN
 
Bob van Enk

Bob van Enk

31/07/2015 21:49:47
Quote Anchor link
Als ik beide op LEFT JOIN zet komen alle namen ook voorbij. Ik wil de namen zonder resultaat eruit filteren. Dus als een persoon op die dag niet gewerkt of op het rooster staat dan moet deze persoon eruit gefilterd worden. Hoe doe ik dat dan precies?

Toevoeging op 31/07/2015 22:40:23:

Ik heb WHERE werkdag.tijdstop != '0' OR inklokken.tijd_stop != '0' toegevoegd en het werkt!!! Bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.