缺少关键字ORA-00905

时间:2016-02-22 12:42:47

标签: sql oracle

请告诉我此查询中的语法问题

SELECT sde
FROM TABLE_EW  sde , CASE_W  spr, DOCUMENT swp 
JOIN swp.id, swp.YEAR  ON (swp.id = sde.ID_DOCUMENT) 
JOIN spr.ID, spr.STATE, spr.NUMBER ON (spr.ID_DOCUMENT = swp.ID)  
WHERE sde.IDENT_TABLEEW LIKE '122337456464' 
AND swp.YEAR LIKE 2015;

SQLDeleoper将问题指向From Line

1 个答案:

答案 0 :(得分:3)

我认为这是你要编写的查询:

SELECT sde.*,swp.id, swp.YEAR,spr.ID, spr.STATE
FROM TABLE_EW  sde 
JOIN DOCUMENT swp ON  (swp.id = sde.ID_DOCUMENT)
JOIN CASE_W spr ON (spr.ID_DOCUMENT = swp.ID)  
WHERE sde.IDENT_TABLEEW = '122337456464' 
AND swp.YEAR = 2015;

如评论中所述,您的SQL代码中有很多错误。 您使用隐式和显式连接, AVOID 使用隐式连接语法,并使用正确的语法,如我的示例。

此外,只有在您可以指定所需列的选项中,我才能猜到您尝试做的是

JOIN spr.ID, spr.STATE -> wanted this columns.

你应该在选择部分写下它们。

另一个问题是连接条件,你要么使用隐式连接,(来自table,table2,table3 ..)然后连接条件在where子句中,或者你使用显式连接,然后条件在ON子句中。你不能同时使用它们!

另一个问题是不必要地使用LIKE。与完全匹配进行比较时,请使用EQUALS符号。