2016-02-22 2 views
0

пожалуйста, скажите мне, что проблема синтаксиса в этом запросеОтсутствует ключевое слово ORA-00905

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 проблемной из линии

+6

В вашем запросе так много проблем, что неясно, с чего начать –

+2

jeezus, вы серьезно смешаете явные и неявные объединения? – Lamak

+0

Возможно, слишком мало условий соединения. – jarlh

ответ

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; 

Как упоминалось в комментариях, у вас есть A LOT ошибок в вашем коде SQL. Вы используете неявные и явные объединения вместе, используйте неявный синтаксис соединений и используйте только соответствующий синтаксис, например, мой пример.

Кроме того, только в избранных можно указать столбцы, которые вы хотите, я предполагаю, что вы пытались сделать, это

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

Вы должны записать их в избранной части.

Другая проблема заключается в условии соединения, вы либо используете неявные соединения, (из таблицы, table2, table3 ..), а затем условие соединения находится в условии where или используете явные соединения, а затем условие находится в ON пункт. Вы не можете использовать оба!

Другой проблемой является ненужное использование LIKE. По сравнению с точным соответствием используйте знак EQUALS.

+0

Вряд ли это запрос (возможно, я думаю), но даже если бы у него все еще были проблемы. Почему вы цитируете число? Почему вы используете LIKE? – Ben

+0

@Ben заметил, что после, я обновил ответ – sagi

+1

@downvoter заботиться, чтобы объяснить? – sagi

Смежные вопросы