Php 从多个表中选择内容并显示
我有以下表格:问题、答案、用户答案 我试图得到一个查询,在那里我可以打印出问题,答案和用户选择的答案 到目前为止,Iv成功地打印出了带有用户答案的问题,但一切都不正常 包含示例数据的表:Php 从多个表中选择内容并显示,php,mysql,mysqli,Php,Mysql,Mysqli,我有以下表格:问题、答案、用户答案 我试图得到一个查询,在那里我可以打印出问题,答案和用户选择的答案 到目前为止,Iv成功地打印出了带有用户答案的问题,但一切都不正常 包含示例数据的表: **Question Table** id Test_ID QText -------------------------------------------- 1 1 What colour is the sky? **Answer Table** id
**Question Table**
id Test_ID QText
--------------------------------------------
1 1 What colour is the sky?
**Answer Table**
id Question_ID AText
-------------------------------
1 1 Green
2 1 Blue
3 1 Red
4 1 Yellow
**User_Answers Table**
id User_ID Question_ID Answer_ID
---------------------------------------------------
1 1 1 2
**Correct_Answers Table**
id Question_ID Answer_ID
---------------------------------------------------
1 1 1
Expected Outcome :
Question xxxxxxx
Answer Your Answer Correct Answer
------------------------------------------
1 x
2 x
3
4
您错过了由问题id
你错过了从
questions
到answers
byquestion\u id
ORDER by q.id
的连接。在SQL结束时,将按顺序获得结果。@JNevill不,这没有做到,因为可能有很多问题,你要按问题id筛选吗?或者这个查询应该只返回用户选择答案的问题?所以他没有回答的问题就不需要了?@Ivanstarost在用户答案表中只包含用户已经回答的问题。ORDER by q.id
在SQL结束时将按顺序得到结果。@jnevil不,这不需要,因为可能会有很多问题,你要按问题id过滤吗?或者这个查询应该只返回用户选择答案的问题?那么他没有回答的问题就不需要了?@Ivanstarost在用户回答表中只包含用户已经回答的问题。我已经让它工作了,只是这些问题不符合顺序。当它在php中打印时,会显示第一个问题,然后是下一个问题,然后是第一个问题的答案。前面总是有一个问题。请尝试在phpmyadmin中执行查询。它似乎工作得很好。您正在描述的场景看起来像是带有$lastQuestionID
变量的问题。另一个可能的原因是:确保您是按qa.ID
排序的,而不是按ua.ID
排序的。也许在所选列列表中将ua.ID
更改为qa.ID
也会更好。查询工作正常。这就是php。我只需要把问题打印一次。如果,你不会错过后面的曲线括号吗?我想我不需要它们。我把它们加进去了,没什么区别。我让它工作,只是问题不符合顺序。当它在php中打印时,会显示第一个问题,然后是下一个问题,然后是第一个问题的答案。前面总是有一个问题。请尝试在phpmyadmin中执行查询。它似乎工作得很好。您正在描述的场景看起来像是带有$lastQuestionID
变量的问题。另一个可能的原因是:确保您是按qa.ID
排序的,而不是按ua.ID
排序的。也许在所选列列表中将ua.ID
更改为qa.ID
也会更好。查询工作正常。这就是php。我只需要把问题打印一次。如果
,你不会错过后面的曲线括号吗?我想我不需要它们。我把它们加进去了,没什么区别
SELECT
q.QText, q.id AS QId, ua.id, qa.AText,
case when qa.ID = ua.Answer_ID then 'x' else NULL end as IsUserAnswer
FROM user_answers ua
INNER JOIN question q ON q.ID = ua.Question_ID
INNER JOIN answer qa ON qa.Question_ID = q.ID
WHERE ua.User_ID=1
ORDER BY QId, qa.ID