繁体   English   中英

SQL 服务器:从一个表中获取所有数据,但条件在第二个表列

[英]SQL Server : get all data from one table but condition on 2nd tables column

我有 3 张表StudentClassesStudentClasses

学生表:

在此处输入图像描述

班级表:

在此处输入图像描述

StudentClasses表:

在此处输入图像描述

我正在尝试的是

select 
    c.ClassID, sc.StudentID, Title, 
    ClassFrom as ClassDate, ClassTo as ClassTime,
    Duration, Type as SessionType, sc.Status as StatusJoin
from 
    Classes c 
left join 
    StudentClasses sc on sc.ClassID = c.ClassID 
where 
    sc.StudentID = '66919287-d63d-4b30-931f-30532b68c2f1' or 
    sc.StudentID IS NULL

这将返回:

在此处输入图像描述

我认为这是正确的,但是当我将其更改为:

where sc.StudentID = '5a22f025-ae64-49b8-9782-32bc2f1ccef6'

这返回:

在此处输入图像描述

这应该返回所有 4 个具有学生 ID 和加入日期 null 的班级

这是问题:我希望这里是所有课程,而不是一些学生加入或不加入,那么应该有 Studentid 和 JoiningDate 否则这些列可以是 null

在 ON 子句中使用您的条件而不是 Where

 select c.ClassID,sc.StudentID,Title,ClassFrom as ClassDate,ClassTo as 
       ClassTime,Duration,Type as SessionType,sc.Status as StatusJoin
       from Classes c 
       left join StudentClasses sc on sc.ClassID = c.ClassID 
       and (sc.StudentID = '66919287-d63d-4b30-931f-30532b68c2f1' or 
       sc.StudentID IS NULL)

select c.ClassID,sc.StudentID,Title,ClassFrom as ClassDate,ClassTo as ClassTime,Duration,Type as SessionType,sc.Status as StatusJoin from Classes c left join StudentClasses sc on sc.ClassID = c.ClassID

也会有帮助!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM