【发布时间】:2013-02-17 06:29:01
【问题描述】:
类
- 类 ID (PK)
- 类名
- 类容量
批次
- BatchId (PK)
- 批次名称
- 尺寸
- 状态 {NotStarted, Enrolled, Completed}
批处理类
- BatchClassId (PK)
- BatchId (FK)
- 类 ID (FK)
- NoOfStudents
关系
- 一个类具有最大容量,因此一个批次可以有多个类,但在给定时间,一个类只能分配给一个批次,状态为 = 已注册(这将在应用程序端进行验证)
我想将所有当前未分配的课程分配给状态不等于已注册
的批次这是我尝试过的,
SELECT C.*
FROM Class C
LEFT JOIN (
Batch B
INNER JOIN BatchClass BC
ON B.BatchId = BC.BatchId
) ON C.ClassId = BC.ClassId
WHERE B.Status <> "Enrolled";
即使当我尝试 WHERE B.Status = "Enrolled" 时,它也会提供所有已注册批次的课程。我想要的是从上面的 SQL 中对我不起作用的对立面。
我不确定我的设计或 SQL 语句是否有问题。请帮忙。提前谢谢你。
【问题讨论】:
-
有 2 个“不”-“当前不”和“不等于”。我猜您的意思是“获取当前未分配给状态等于已注册的批次的所有类”。
-
@Teddy 确切地说是的。当前注册的课程应免除所有课程。
标签: sql database-design left-join inner-join