我试图找到一个类似的问题,但我不能。我们只是尝试使用联合进行简单的查询,并在最后一行收到"无效标识符"错误。有谁知道如何组织括号以使其有效?我们已经尝试了很多方法。
SELECT DISTINCT E.CID
FROM Enrollments E, Students S
WHERE E.SID = S.SID AND (S.Major <> 'CS' OR S.Major IS NULL)
GROUP BY E.CID
HAVING 10 > COUNT (*)
UNION SELECT DISTINCT C.CID
FROM COURSES C
MINUS
SELECT DISTINCT E3.CID
FROM Enrollments E3, Students S2
WHERE E3.SID = S2.SID
GROUP BY E3.CID
HAVING 0 < COUNT (*)
ORDER BY E.CID DESC;
错误信息:
第 14 行的错误:
ORA-00904:"E"。CID":标识符无效
编辑:只是为了让您知道目的是什么,所有少于10个非CS专业的班级以及所有空课程。
- 您正在选择
E.CID
然后,您将 - 使用另一个查询创建联合,您将在其中选择
C.CID
- 在 order by 子句中,您有一个结果,其中列命名为
CID
而不是E.CID
补充一点,正如Impelar所写的那样,关于分组 by 子句中的列
E.CID
:"E.CID在最后一行的层面上不存在。它仅存在于第一个查询的范围内(第 1-5 行(">
SELECT DISTINCT E.CID FROM Enrollments E, Students S WHERE E.SID = S.SID AND (S.Major <> 'CS' OR S.Major IS NULL) HAVING 10 > COUNT (*) GROUP BY E.CID UNION SELECT DISTINCT C.CID FROM COURSES C MINUS SELECT DISTINCT E3.CID FROM Enrollments E3, Students S2 WHERE E3.SID = S2.SID GROUP BY E3.CID HAVING 0 < COUNT (*) ORDER BY CID DESC;
这是一个没有错误的演示