在mysql中显示用户的结果摘要

bnl4lu3b  于 2021-06-23  发布在  Mysql
关注(0)|答案(4)|浏览(237)

我想显示用户的结果摘要。i、 e.他试图回答的问题和答案的结果,以及他没有回答的问题。我有一个表包含问题大师和一个表是答案大师。我想显示用户的摘要。下面是我的表格结构。目前,我只得到尝试的问题和他们的答案通过以下查询

SELECT t1.exam_type,t1.questions,a1.answer,t1.correct_ans FROM tbl_que t1 LEFT JOIN tbl_ans a1 ON a1.que_id=t1.que_id WHERE t1.exam_type='1' AND a1.user_id='001' ORDER BY t1.que_id

但我也希望针对特定用户提出一些不受诱惑的问题。

tbl_que
que_id  |exam_type  |exam_name  |questions |correct_ans
1       |1          |railway    |que1      |ansA
2       |1          |railway    |que2      |ansC
3       |2          |post       |que3      |ansC
4       |2          |post       |que4      |ansA
5       |1          |railway    |que5      |ansB

tbl_ans
ans_id  |exam_type |answer |user_id |que_id
1       |1         |right  |001     |1
2       |1         |wrong  |001     |2
3       |1         |right  |002     |3
4       |1         |right  |002     |4

Output/result
|exam_type |question |answer   |correct_ans
|1         |que1     |right    |ansA
|1         |que2     |wrong    |ansC
|1         |que5     |NULL     |ansB
lb3vh1jj

lb3vh1jj1#

尝试使用左连接:

select exam_type,questions,answer,correct_ans
from tbl_que a
left join tbl_ans b on a.que_id=b.que_id
where exam_type=1 AND (b.user_id='001' OR b.user_id IS NULL)
nwnhqdif

nwnhqdif2#

也可以通过添加 user_id 左连接自身中的条件。
下面的查询应该适合您。

SELECT 
    t1.exam_type, t1.questions, a1.answer, t1.correct_ans
FROM
    tbl_que t1
    LEFT JOIN  tbl_ans a1 ON a1.que_id = t1.que_id AND a1.user_id = '001'
WHERE
    t1.exam_type = '1' ORDER BY t1.que_id
332nm8kg

332nm8kg3#

把用户id的条件放在左join的on子句中怎么样?
在这里测试sql fiddle

select 
 q.exam_type,
 q.questions,
 a.answer,
 q.correct_ans
from tbl_que q
left join tbl_ans a on (a.que_id = q.que_id and a.user_id='001')
where q.exam_type = 1
order by q.que_id
ldxq2e6h

ldxq2e6h4#

你只需要改变你的想法 WHERE 条款:

WHERE t1.exam_type='1' AND (a1.user_id='001' OR a1.user_id IS NULL)

这将在结果中包括来自tbl que的所有问题,这些问题没有任何用户的答案(因此包括用户001)。
输出:

exam_type   questions   answer  correct_ans
1           que1        right   ansA
1           que2        wrong   ansC
1           que5        (null)  ansB

sqlfiddle公司

相关问题