gpt4 book ai didi

mysql - 使用左连接或右连接连接四个表

转载 作者:行者123 更新时间:2023-11-29 10:08:34 25 4
gpt4 key购买 nike

我有四张 table 。

  1. 级别表级别(id、名称)
  2. 学生表学生(id、姓名、level_id)
  3. 主题表主题(ID、名称)
  4. 报告表报告(id、student_id、subject_id、测试、考试)

我需要一个查询来获取单个级别的结果(报告表)(例如一级id=1)和特定主题(例如< strong>id=2 例如英语)

我有这个查询:

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 的学生表中的所有数据,但如果结果表中没有记录,则其 testexam 行中的数据为 NULL。

主要问题是查询中的 subject_id 子句(reports . subject_id = '2')。它仅适用于记录表 Here is the result 中存在的记录

当我使用结果表中没有的 subject_id 时 Here is the result -not returning anything

最佳答案

But it's only showing result for records that are inside the reports table

严格来说并不正确 - 它仅显示 reports.subject_id = '2' 的结果。如果报告表中没有匹配的行,则 subject_id 将为 null,并且 null 不等于 2。

您需要在 join 子句中指定 reports 表的谓词,而不是在 where 子句中,以获取所有学生:

 select name, test, exam 
from `reports`
right join `students`
on `reports`.`student_id` = `students`.`id`
and `reports`.`subject_id` = '2'
where `students`.`level_id` = '1'

关于mysql - 使用左连接或右连接连接四个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51423174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com