【发布时间】:2018-12-27 14:56:35
【问题描述】:
我有四张桌子。
- 级别表级别(id,名称)
- 学生表学生(id、name、level_id)
- 主题表主题(id,名称)
- 报告表报告(id、student_id、subject_id、test、exam)
我需要一个查询来获取单个级别的结果(报告表)(例如 Class One 的 id=1)和特定主题(例如 id=2 表示 English)
我有这个问题:
select name, test, exam
from `reports`
right join `students`
on `reports`.`student_id` = `students`.`id`
where `students`.`level_id` = '1'
and `reports`.`subject_id` = '2'
但它只显示报告表内记录的结果。我期待学生表中指定 level_id 的所有数据,但如果结果表中没有记录,则他们的 test 和 exam 行中的所有数据为 NULL。 p>
主要问题是查询中的 subject_id 子句(和reports.subject_id = '2')。它仅在记录表Here is the result中存在时才用于记录
当我使用了不在结果表中的 subject_id Here is the result -not returning anything
【问题讨论】:
-
“在报告表内”...您最初没有提到报告表。您指的是 “results” 吗?还是这是您没有列出的另一张桌子?
-
请参阅:Why should I provide an MCVE for what seems to me to be a very simple SQL query? 并注意没有人真正使用 RIGHT JOIN。
-
@Adyson...抱歉误导了你。我错误地使用了结果表而不是报告表......我已经更正了它
标签: mysql