Ik ben bezig met een query die niet wil lukken. Het gaat om een systeem waar gebruikers een collega kunnen beoordelen aan de hand van een vragenlijst.
- De vragen staan in de tabel vragen
- De antwoorden worden opgeslagen in de tabel antwoorden
- De beoordeling wordt opgeslagen in de tabel beoordeling
De tabelstructuur is als volgt (versimpeld)
Niet alle vragen zijn verplicht, dus het kan voorkomen dat een persoon meerdere keren beoordeeld wordt maar de ene beoordelaar vraag 2 niet invult en de andere wel.
Nu wil ik het volgende resultaat uit deze query
Ik wil dus ook de vragen te zien krijgen waar geen antwoord op is gegeven. Dit dacht ik te doen met onderstaande query, maar deze laat bovenstaand resultaat zien zonder de rijen waar vraag 2 niet is ingevuld.
Hoe krijg ik het voor elkaar de niet ingevulde vragen toch in mijn resultset te krijgen? Is het überhaupt mogelijk met deze tabelstructuur. Ik heb het gevoel dat ik een denkfout maak.
- De vragen staan in de tabel vragen
- De antwoorden worden opgeslagen in de tabel antwoorden
- De beoordeling wordt opgeslagen in de tabel beoordeling
De tabelstructuur is als volgt (versimpeld)
vragen | antwoorden | beoordelingen |
vraag_id | vraag_id | beoordeling_id |
vraag | beoordeling_id | beoordeelde |
antwoord | beoordelaar |
Niet alle vragen zijn verplicht, dus het kan voorkomen dat een persoon meerdere keren beoordeeld wordt maar de ene beoordelaar vraag 2 niet invult en de andere wel.
Nu wil ik het volgende resultaat uit deze query
vraag | antwoord | beoordeelde |
2 | 6 | Henkie Penkie |
2 | NULL | Henkie Penkie |
2 | 9 | Henkie Penkie |
2 | NULL | Henkie Penkie |
Ik wil dus ook de vragen te zien krijgen waar geen antwoord op is gegeven. Dit dacht ik te doen met onderstaande query, maar deze laat bovenstaand resultaat zien zonder de rijen waar vraag 2 niet is ingevuld.
code:
1
2
3
4
5
| SELECT * FROM antwoorden RIGHT JOIN beoordeling ON antwoorden.beoordeling_id = beoordeling.beoordeling_id LEFT JOIN vragen ON antwoorden.vraag_id = vragen.vraag_id WHERE beoordeling.pnr_beoordeelde = 'Henkie Penkie' AND vragen.vraag_id = 2 |
Hoe krijg ik het voor elkaar de niet ingevulde vragen toch in mijn resultset te krijgen? Is het überhaupt mogelijk met deze tabelstructuur. Ik heb het gevoel dat ik een denkfout maak.