Mysql 如果答案为false,请选择正确的奇数
我的数据库中有3个表,分别是:Mysql 如果答案为false,请选择正确的奇数,mysql,sql,Mysql,Sql,我的数据库中有3个表,分别是:问题,回答问题,赔率 第一个(问题)有一个问题列表 +=========================+ | ID | question | +=========================+ | 1 | Bla Bla | | 2 | question | | 3 | Other Question | +-------------------------+ 第二个问题(Answe
问题
,回答问题
,赔率
第一个(问题)有一个问题列表
+=========================+
| 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
它的工作很好,但我想得到正确的奇数,如果用户的答案是假的
为此,我在SQL上使用IF
语句,查询是:
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
如果我想知道问题ID 4的答案,我需要得到正确的奇数
Question ID 4 'Bla Bla' | Correct odd of Question ID 4
有什么帮助吗?需要使用正确的连接。不确定应该选择哪些列,但这很容易修复
SELECT q.id, q.question, o.odd as correct, o2.odd as user_odd
FROM question q
JOIN AnswerQuestion a ON a.idQuestion = q.id
JOIN Odds o ON o.questionID = q.id AND o.isCorrect = 1
JOIN Odds o2 ON o2.id = a.idOdd
WHERE a.idUser = 5
请提供其他表,如果我们不知道模式,我们不能help@DDS我把它加上去了,比如说,陛下?这是一个怎样的例子?谢谢你的帮助,先生,我的问题是我想得到正确的几率如果用户的答案不正确,你的查询得到一个问题的错误几率(不止一个)我希望你能理解我的坏习惯English@ThaSayou我将检查
isCorrect
更改为1。我尝试此查询SELECT*FROM question q JOIN answera on a.idQuestion=q.id JOIN赔率o on o.questionID=q.id和o.isCorrect=1,其中a.IdUser=5
此查询返回问题的正确奇数,但是我想显示用户的奇数+正确的奇数的答案。有什么帮助吗?