【发布时间】:2015-05-03 21:37:09
【问题描述】:
我正在尝试编写一个 SQL 查询,该查询基本上采用已为特定日期插入的起始值和结束值,并将它们与所有起始值和结束值进行比较,以输出不冲突的所有内容。换句话说,我正在编写一个日程安排应用程序,它应该告诉一个人由于日程安排冲突而不能参加的课程。这就是我现在拥有的:
SELECT C2.COURSENUM, C2.SECTIONID
FROM TIMES T2, CLASSES C2
WHERE T2.SECTIONID = C2.SECTIONID AND
(T2.MONSTART >=
(SELECT T.MONEND
FROM DEGAUDIT D, UNDERGRAD S, TIMES T, CLASSES C
WHERE D.SID = S.SID AND S.SSN = ? AND C.SECTIONID = T.SECTIONID
AND D.SECTIONID = C.SECTIONID)
OR T2.MONEND <=
(SELECT T.MONSTART
FROM DEGAUDIT D, UNDERGRAD S, TIMES T, CLASSES C
WHERE D.SID = S.SID AND S.SSN = ? AND
C.SECTIONID = T.SECTIONID
AND D.SECTIONID = C.SECTIONID))
MonStart 和 MonEnd 分别是我的开始时间和结束时间。现在,我遇到了麻烦,因为两个子查询都返回了一个以上的值,您不能将其与 = 符号一起使用。有没有办法使用 IN 或 NOT IN 来完成这项任务?谢谢!非常感谢您的帮助。
【问题讨论】:
-
MySQL 和/或 sqlite?尝试重写为不带子查询的连接。
-
您问题的目的本身并不清楚。另外,你能粘贴你的表的模式吗?