Ik krijg mijn query niet aan de praat. Wat is de situatie?
Er zijn 3 tabellen:
Ik wil nu selecteren: alle berichten voor een bepaalde medewerker die hij/zij nog niet gelezen heeft.
Geeft alle berichten voor medewerker 5. Het lukt me echter niet om voor elkaar te boksen dat hij niet de berichten selecteert die betreffende gebruiker al gelezen heeft. De subquery in
is namelijk of altijd waar, of altijd onwaar, maar niet gekoppeld aan het berichtId.
Hoe dit op te lossen?
Er zijn 3 tabellen:
- berichten
- voorMedewerker
- gelezenDoorMedewerker
| berichten | voorMedewerker | gelezenDoorMedewerker |
| berichtId | berichtId | berichtId |
| tekst | medewerkerId | medewerkerId |
Ik wil nu selecteren: alle berichten voor een bepaalde medewerker die hij/zij nog niet gelezen heeft.
SQL:
1
2
3
4
5
| SELECT berichten.* FROM berichten, voorMedewerker WHERE berichten.berichtId = voorMedewerker.berichtId AND voorMedewerker.medewerkerId = '5' |
Geeft alle berichten voor medewerker 5. Het lukt me echter niet om voor elkaar te boksen dat hij niet de berichten selecteert die betreffende gebruiker al gelezen heeft. De subquery in
SQL:
1
2
3
4
5
6
7
8
| SELECT berichten.* FROM berichten, voorMedewerker WHERE berichten.berichtId = voorMedewerker.berichtId AND voorMedewerker.medewerkerId = '5' AND voorMedewerker.medewerkerId != ANY (SELECT gelezenDoorMedewerker.medewerkerId FROM gelezenDoorMedewerker WHERE gelezenDoorMedewerker.medewerkerId = '5') |
is namelijk of altijd waar, of altijd onwaar, maar niet gekoppeld aan het berichtId.
Hoe dit op te lossen?