|
Categorieën >
PHP & SQL
Query geeft geen resultaten door LEFT JOIN
|
|
|
offline
|
Lid
|
Beste leden,
Ik ben heel druk bezig met een school opdracht. Maar kom er nu niet meer uit. We moeten een ziekmelding systeem schrijven, waarbij hoofd personeelszaken vervangers kunnen regelen.
Nu moet er een lijst komen die de beschikbare vervangers aangeeft. De eisen zijn:
- vervanger mag zelf natuurlijk niet ziek zijn
- vervanger mag niet al iemand anders vervangen.
De query die ik hiervoor dacht te gebruiken is:
SELECT care_person.name_first, care_person.name_middle, care_person.name_last, care_personell.job_function_title
FROM care_person
JOIN care_personell ON(care_personell.pid=care_person.pid)
LEFT JOIN ziekmeldingen AS person ON(person.pid=care_person.pid)
LEFT JOIN ziekmeldingen AS vervang ON(vervang.vid=care_person.pid)
WHERE person.beterdatum != '' AND vervang.vidDatum != '".$date."' GROUP BY care_person.pid
SELECT care_person.name_first, care_person.name_middle, care_person.name_last, care_personell.job_function_title FROM care_person JOIN care_personell ON (care_personell .pid =care_person .pid ) LEFT JOIN ziekmeldingen AS person ON (person .pid =care_person .pid ) LEFT JOIN ziekmeldingen AS vervang ON (vervang .vid =care_person .pid ) WHERE person.beterdatum != '' AND vervang.vidDatum != '".$date."' GROUP BY care_person.pid
Maar deze geeft geen resultaten.
Uitleg namen: pid = personeels id
vid = vervangers id.
vidDatum = de datum waarop de vervanger was ingeroosterd en mag dus niet gelijk zijn aan de datum van vandaag ($date).
Hopelijk kan iemand hier mij mee helpen.
De query mag dus alleen personen weergeven die
- niet ziek zijn - en niet al iemand vervangen op de datum van vandaag. |
2 antwoorden
|
|
|
offline
|
PHP interesse
|
Geef je datamodel eens. Wat is het verschil bijvoorbeeld tussen care_person en care_personell? Dit kan volgens mij mooi worden opgelost met een self join.
|
|
|
|
offline
|
Lid
|
Het verschil is dat in care_person alle persoonlijke gegevens staan, en in care_personell staat het personeel, dus zakelijke email, hun functie contract datum eind contract.
Dus wat de bedoeling is dat we voornaam en achternaam hebben van het personeelslid (dat staat in care_person) vervolgens hun functie, en email (die staan in care_personell) en dan nog dat het personeelslid niet ziek is, of niet al vervanger is op de dag van vandaag.
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|