Hallo.
Een probleem dat volgens mij half logica, half beperkte kennis van MySQL betreft. Het gaat om de volgende (versimpelde) table, waarin resultaten van een survey worden opgeslagen.
In deze tabel staan - voor het voorbeeld - 4 records, te weten:
Op deze manier wordt bij iedere vraag die wordt gesteld, het multiple-choice antwoord opgeslagen bij de betreffende gebruiker.
Nu wil ik graag een rapportage maken, waarin ik alle gebruikers terughaal, waarvoor geldt:
A. (questionID=1 AND answerID=1)
B. (questionID=1 AND answerID=2)
C. (questionID=2 AND answerID=3)
Nu gaat het om het probleem met EN-en en OF-en. Bekijk de volgende queries:
Voorbeeld 1:
Voorbeeld 2:
In het eerste voorbeeld krijg ik beide gebruikers geselecteerd. Dat is onwenselijk, want gebruiker 2 voldoet niet aan de voorwaarde C. In het tweede voorbeeld wordt geen enkele gebruiker geselecteerd. Waarschijnlijk omdat er een andere manier is om die query goed weer te geven.
Wie kan mij verder helpen?
Alvast enorm bedankt!
Een probleem dat volgens mij half logica, half beperkte kennis van MySQL betreft. Het gaat om de volgende (versimpelde) table, waarin resultaten van een survey worden opgeslagen.
code:
1
2
3
4
5
6
| table results {
resultID PRI KEY
userID (int 11)
questionID (int 11)
answerID (int 11)
} |
In deze tabel staan - voor het voorbeeld - 4 records, te weten:
code:
1
2
3
4
5
| resultID userID questionID answerID 1 1 1 1 2 1 2 3 3 2 1 2 4 2 2 4 |
Op deze manier wordt bij iedere vraag die wordt gesteld, het multiple-choice antwoord opgeslagen bij de betreffende gebruiker.
Nu wil ik graag een rapportage maken, waarin ik alle gebruikers terughaal, waarvoor geldt:
A. (questionID=1 AND answerID=1)
B. (questionID=1 AND answerID=2)
C. (questionID=2 AND answerID=3)
Nu gaat het om het probleem met EN-en en OF-en. Bekijk de volgende queries:
Voorbeeld 1:
code:
1
2
3
4
5
6
| SELECT * FROM results WHERE ( (questionID =1 AND answerID =1) OR (questionID =1 AND answerID =2) ) OR (questionID =2 AND answerID =3) |
Voorbeeld 2:
code:
1
2
3
4
5
6
| SELECT * FROM results WHERE ( (questionID =1 AND answerID =1) OR (questionID =1 AND answerID =2) ) AND (questionID =2 AND answerID =3) |
In het eerste voorbeeld krijg ik beide gebruikers geselecteerd. Dat is onwenselijk, want gebruiker 2 voldoet niet aan de voorwaarde C. In het tweede voorbeeld wordt geen enkele gebruiker geselecteerd. Waarschijnlijk omdat er een andere manier is om die query goed weer te geven.
Wie kan mij verder helpen?
Alvast enorm bedankt!