У меня есть две таблицы для вопросника множественного выбора (каждый пользователь отвечает на ряд вопросов):MySQL вложенные Анд и несколько условий
users (userID, name, email)
votes (voteID, userID, questionID, answerID)
Примеры данных (пользователей):
0, Some Name, [email protected]
1, Other Name, [email protected]
Примеры данных (голосов):
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";
Но это просто возвращает всех пользователей с один правильный ответ.
Как мне сделать правильный запрос, чтобы выбрать всех пользователей с правильными ответами?
В какой колонке указано, правильный ответ или нет? и как? – 7alhashmi
Я распечатываю user.userID, users.name и users.email. –