В моей базе данных есть 3 таблицы с именем: questions
, answerquestion
, odds
Первый (Вопросы) имеет список вопросов
+=========================+
| ID | question |
+=========================+
| 1 | Bla Bla |
| 2 | question |
| 3 | Other Question |
+-------------------------+
Второй (AnswerQuestion) имеет ответ пользователей на конкретный вопрос
+==================================================+
| ID | idQuestion | idOdd | idUser | isCorrect |
+==================================================+
| 1 | 4 | 2 | 5 | 0 |
| 2 | 3 | 1 | 1 | 1 |
| 3 | 1 | 3 | 10 | 0 |
+--------------------------------------------------+
Третий (шансы) имеет шансы на вопрос с правильным
+============================================+
| ID | odd | idQuestion | isCorrect |
+============================================+
| 1 | One | 1 | 0 |
| 2 | Two | 1 | 1 |
| 3 | Three | 1 | 0 |
+--------------------------------------------+
Итак, чтобы получить ответы конкретного пользователя, я использую этот запрос:
SELECT * FROM answerquestion a, question q, odds o
WHERE a.IdUser = :id AND a.IdOdd = o.ID AND a.IdQuestion = q.ID
Это нормально работает, но я хочу получить правильное нечетное, если ответ пользователя ложный
и для этого я использую оператор IF
для SQL, запрос:
SET SQL_BIG_SELECTS=1;
SELECT DISTINCT IF(o.isCorrect = 0, o.Corr.TheCorr, o.odd), q.Question
FROM answerquestion a, odds o, question q,
( SELECT o.odd AS TheCorr FROM odds o, question q WHERE o.isCorrect = 1 AND o.IdQuestion = q.ID) AS Corr
WHERE a.IdUser = 5
AND q.ID = a.idQuestion
AND a.IdOdd = o.ID
Проблема в этом запросе - ложный ответ, он дает мне правильный ответ на все вопросы и дублирует вопрос
Пример:
Question ID 4 'Bla Bla' | Correct odd of Question ID 1
Question ID 4 'Bla Bla' | Correct odd of Question ID 2
Question ID 4 'Bla Bla' | Correct odd of Question ID 3
Question ID 4 'Bla Bla' | Correct odd of Question ID 4
Question ID 4 'Bla Bla' | Correct odd of Question ID 5
Я хочу, чтобы, если ответ на вопрос 4, мне нужно получить только правильное нечетное из этого
Question ID 4 'Bla Bla' | Correct odd of Question ID 4
Любая помощь?