Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 在Oracle中收到错误-关于子查询_Sql_Oracle - Fatal编程技术网

Sql 在Oracle中收到错误-关于子查询

Sql 在Oracle中收到错误-关于子查询,sql,oracle,Sql,Oracle,我收到错误:ORA-00933:SQL命令未正确结束 93300000-SQL命令未正确结束 *原因: *行动: 第51行第3列出错 SELECT * FROM EMS.vw_tal_dailyptnsum (SELECT ems.vw_tal_patron.ptnid, ems.vw_tal_patron.firstname, ems.vw_tal_patron.lastname, ems.vw_tal_ptncard.lastmoddate, ems.vw_tal_userauditac

我收到错误:ORA-00933:SQL命令未正确结束 93300000-SQL命令未正确结束 *原因: *行动: 第51行第3列出错

SELECT *
FROM EMS.vw_tal_dailyptnsum
  (SELECT ems.vw_tal_patron.ptnid, ems.vw_tal_patron.firstname, ems.vw_tal_patron.lastname, ems.vw_tal_ptncard.lastmoddate, ems.vw_tal_userauditaction.action
   FROM ems.vw_tal_patron, ems.vw_tal_ptncard, ems.vw_tal_userauditaction 
   WHERE ems.vw_tal_patron.ptnid = Ems.vw_tal_ptncard.ptnid
   AND ems.vw_tal_ptncard.lastmoddate BETWEEN TO_DATE('04/24/2021 00:00:00', 'mm/dd/yyyy HH24:MI:SS') and TO_DATE('04/24/2021 23:59:59', 'mm/dd/yyyy HH24:MI:SS')
   AND ems.vw_tal_userauditaction.action = 'CREATE USER')
WHERE EMS.vw_tal_dailyptnsum.anntypedesc = 'Sign-Up Date' 
AND EMS.vw_tal_dailyptnsum.anndate BETWEEN TO_DATE('04/24/2021 00:00:00', 'mm/dd/yyyy HH24:MI:SS') and TO_DATE('04/24/2021 23:59:59', 'mm/dd/yyyy HH24:MI:SS');

看起来很奇怪:如果要加入子查询,需要在第二行末尾添加逗号,如下所示:

挑选* 从EMS.vw_tal_dailyptnsum,-<在这里添加了一个逗号 选择ems.vw_-tal_-patron.ptnid、ems.vw_-tal_-patron.firstname、ems.vw_-tal_-patron.lastname、ems.vw_-tal_-ptncard.lastmoddate、ems.vw_-tal_-userauditaction.action 来自ems.vw_tal_用户、ems.vw_tal_ptncard、ems.vw_tal_用户审核操作 其中ems.vw_tal_patron.ptnid=ems.vw_tal_ptncard.ptnid 和ems.vw_tal_ptncard.lastmoddate介于日期'04/24/2021 00:00:00','mm/dd/yyyy HH24:MI:SS'和日期'04/24/2021 23:59:59','mm/dd/yyyy HH24:MI:SS'之间 和ems.vw_tal_userauditaction.action='CREATE USER' 其中EMS.vw_tal_dailyptnsum.anntypedesc='注册日期' 和EMS.vw_tal_dailyptnsum.anndate介于日期'04/24/2021 00:00:00','mm/dd/yyyy HH24:MI:SS'和日期'04/24/2021 23:59:59','mm/dd/yyyy HH24:MI:SS'之间; 但是我在EMS.vw_tal_dailyptnsum和子查询之间没有看到任何连接谓词。顺便说一句,最好为子查询提供一个别名,例如:

挑选* 从EMS.vw_tal_dailyptnsum,-<在这里添加了一个逗号 选择ems.vw_-tal_-patron.ptnid、ems.vw_-tal_-patron.firstname、ems.vw_-tal_-patron.lastname、ems.vw_-tal_-ptncard.lastmoddate、ems.vw_-tal_-userauditaction.action 来自ems.vw_tal_用户、ems.vw_tal_ptncard、ems.vw_tal_用户审核操作 其中ems.vw_tal_patron.ptnid=ems.vw_tal_ptncard.ptnid 和ems.vw_tal_ptncard.lastmoddate 至日期'2021年4月24日00:00:00','mm/dd/yyyy HH24:MI:SS' 截至日期'2021年4月24日23:59:59','mm/dd/yyyy HH24:MI:SS' 和ems.vw_tal_userauditaction.action='CREATE USER' SV-<添加了别名SV子查询视图 其中EMS.vw_tal_dailyptnsum.anntypedesc='注册日期' 和EMS.vw_tal_dailyptnsum.anndate 至日期'2021年4月24日00:00:00','mm/dd/yyyy HH24:MI:SS' 截至2021年4月24日23:59:59“mm/dd/yyyy HH24:MI:SS”;
将代码作为文本包含。不是作为一个不可读的图像。您好-您有一个第二个SELECT语句嵌入在主SELECT语句中,但未连接到主SELECT语句。这不是有效的SQL-您实际上想做什么?即使这种连接是有意的,以这种方式编写连接也是非常糟糕的做法,几十年来都没有被推荐过。应使用ANSI SQL连接语法,而不是内部连接、左外部连接等@NickW部分同意,但Oracle CBO中有许多细微差别,我无法在简短的评论中加以说明。这是一个古老的大问题,你可以在谷歌上搜索更多关于原生Oracle SQL与ANSI SQL的信息正确的显式连接操作符会在Oracle中导致错误或错误计划的日子早已过去了。当它在9i中引入时,它确实存在问题,大多数问题在10g中得到了修复,而且自11g以来,它没有比Oracle中任何其他领域更多的bug。现在确实是抛弃旧语法的时候了。对于外部联接,甚至Oracle建议取消专有+运算符。正确的显式联接运算符将导致Oracle出现错误或错误计划的日子早已过去了。-简言之,不是。这是一个非常大的问题,我无法涵盖所有方面,但由于我们只是在评论中讨论,我将尽可能简短地回答:1/作为一名Oracle性能调整和故障排除工程师,我经常面临此类问题。不幸的是,它们将在不久的将来出现,因为Oracle将ANSI样式的查询重写为自己的本机语法。显然,它增加了额外的复杂性。请在此处阅读更多信息:例如,12.1.0.2提示ANSI\U REACH/NO\U ANSI\U REACH中出现了ANSI\U REACH转换。另外,提示这样的查询有点困难:。