Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
联合后sql命令的标识符顺序无效_Sql_Oracle - Fatal编程技术网

联合后sql命令的标识符顺序无效

联合后sql命令的标识符顺序无效,sql,oracle,Sql,Oracle,我试图找到一个类似的问题,但我找不到。我们只是尝试用一个联合进行一个简单的查询,最后一行出现了“无效标识符”错误。有人知道如何组织括号使其有效吗?我们已经尝试了很多方法 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 (*) UNIO

我试图找到一个类似的问题,但我找不到。我们只是尝试用一个联合进行一个简单的查询,最后一行出现了“无效标识符”错误。有人知道如何组织括号使其有效吗?我们已经尝试了很多方法

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门的课程,以及所有的空课

您正在选择E.CID 然后,您将使用另一个查询创建一个union,您将在其中选择C.CID 在ORDERBY子句中,有一个列名为CID而不是E.CID的结果 除此之外,如下文所述,关于group by条款中的E.CID列:

E.CID在最后一行的级别不存在。它只存在于第一个查询的范围中的第1-5行


今天的提示:始终使用现代的显式连接语法。更容易编写而不出错,更容易阅读和维护,如果需要,更容易转换为外部联接!无需执行SELECT DISTINCT,因为您的分组将消除所有重复项。无需执行SELECT DISTINCT,因为UNION消除了所有重复项。添加说明:E.CID在最后一行的级别不存在。它确实存在于第一个查询的范围内,仅在第1-5行。很好+1Hi@DevonF,这个回答对你有帮助吗?如果是,请投票。答案是正确的,它修复了你的错误,我相信它是正确的。然后你可以接受正确的答案并放弃投票。干杯
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;