多肢選択式アンケート用に 2 つのテーブルがあります (各ユーザーが一連の質問に回答します)。
users (userID, name, email)
votes (voteID, userID, questionID, answerID)
サンプルデータ ( users ):
0, Some Name, some@thing.com
1, Other Name, some@one.com
サンプルデータ (投票):
0, 1, 1, 1
1, 1, 2, 2
2, 1, 3, 2
正しい答えを持っているすべてのユーザーを選択したいと思います。
私はこれを試しました(答えをハードコーディングした場所):
$sql = "SELECT users.userID, users.name, users.email FROM users
INNER JOIN votes ON (users.userID = votes.userID)
WHERE (votes.questionID = '1' AND votes.answerID = '1')
AND (votes.questionID = '2' AND votes.answerID = '2')
AND (votes.questionID = '3' AND votes.answerID = '2')
AND (votes.questionID = '4' AND votes.answerID = '3')
AND (votes.questionID = '5' AND votes.answerID = '1')
GROUP BY users.userID";
しかし、これは何も返しません。
また、次のようなことも試しました(回答もハードコーディングしました):
$sql = "SELECT users.userID, users.name, users.email FROM users
INNER JOIN transfertipsvotes ON (users.userID = transfertipsvotes.userID)
WHERE (transfertipsvotes.questionID = '1' AND transfertipsvotes.answerID = '1') GROUP BY users.userID
UNION
SELECT users.userID, users.name, users.email FROM users
INNER JOIN transfertipsvotes ON (users.userID = transfertipsvotes.userID)
WHERE (transfertipsvotes.questionID = '2' AND transfertipsvotes.answerID = '2') GROUP BY users.userID
UNION
SELECT users.userID, users.name, users.email FROM users
INNER JOIN transfertipsvotes ON (users.userID = transfertipsvotes.userID)
WHERE (transfertipsvotes.questionID = '3' AND transfertipsvotes.answerID = '2') GROUP BY users.userID";
ただし、これはすべてのユーザーに1 つの正解を返すだけです。
正しい回答を持つすべてのユーザーを選択する正しいクエリを作成するにはどうすればよいですか?