[Opgelost] problemen met sql query
In de tabel beschikbaar wordt een userid opgeslagen en de eventid's waarvoor de user zich beschikbaar zet.
nu wil ik met een query alle events weergeven waarvoor de user zich niet opgegeven heeft.
Dit is mijn sql tot nu toe:
SELECT events.id, events.title, events.start, events.end, beschikbaar.userID, beschikbaar.eventID FROM events left join beschikbaar on events.id = beschikbaar.eventID where beschikbaar.userID <> 6 OR beschikbaar.eventID is null
Het probleem dat ik hier heb is dat, indien een andere user zich opgegeven heeft voor hetzelfde event, dit ook in het resultaat staat, en dat wil ik niet.
in de linker tabel zouden dus enkel de events mogen staan waarvoor de user zicht niet heeft opgegeven, in de rechter tabel komen de events waarvoor de user zich wel heeft opgegeven
Weet iemand hoe ik dit kan realiseren?
Gewijzigd op 19/06/2018 14:14:29 door Steven mees
Daarbij: de "tabellen" waar je het in de eerste paragraaf over hebt zijn database-tabellen, maar de "tabellen" waar je het in de voorlaatste paragraaf over hebt zijn HTML-tabellen die je weergeeft ofzo?
Het probleem waar je mogelijk tegenaan liep was dat op het moment dat je in je WHERE-conditie zet welk user(id) het betrof, dat je dan niet de events in de resultaten te zien kreeg waarvoor die user zich niet had opgegeven.
Wat je waarschijnlijk in plaats hiervan moet doen is dit opnemen in de (LEFT) JOIN-conditie zelf. Dan wanneer je de resultaten uitleest kijk je of het beschikbaar.userID NULL is of niet, en op grond daarvan zet je deze in de beschikbaar/niet beschikbaar lijst.
Dus zoiets (moet mogelijk nog getweaked worden):
ik heb het met u reactie kunnen oplossen.