Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从多个表中选择内容并显示_Php_Mysql_Mysqli - Fatal编程技术网

Php 从多个表中选择内容并显示

Php 从多个表中选择内容并显示,php,mysql,mysqli,Php,Mysql,Mysqli,我有以下表格:问题、答案、用户答案 我试图得到一个查询,在那里我可以打印出问题,答案和用户选择的答案 到目前为止,Iv成功地打印出了带有用户答案的问题,但一切都不正常 包含示例数据的表: **Question Table** id Test_ID QText -------------------------------------------- 1 1 What colour is the sky? **Answer Table** id

我有以下表格:问题、答案、用户答案

我试图得到一个查询,在那里我可以打印出问题,答案和用户选择的答案

到目前为止,Iv成功地打印出了带有用户答案的问题,但一切都不正常

包含示例数据的表:

**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
by
question\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