Множественный выбор и объединение .. Oracle Oracle - PullRequest
1 голос
/ 11 февраля 2012
SELECT table1.col1, table2.col2
FROM table1
WHERE col3
IN(SELECT col1 FROM table3 WHERE col4 IN(SELECT col4 FROM table4 WHERE col5 LIKE '%XYZ%'))
INNER JOIN table2 ON table1.col1=table2.col6
ORDER BY table1.col1

Я получаю ORA00933 error.SQL command not properly ended. Если я удаляю объединение, запрос работает отлично.Но мне нужно присоединиться.Ошибка рядом с ключевым словом LIKE.Как я могу решить это?

Ответы [ 2 ]

4 голосов
/ 11 февраля 2012

Вы потеряли INNER JOIN, он был указан в вашем предложении WHERE.

Обратите внимание, что вы можете принять некоторую схему форматирования для написания операторов SQL.Обнаружить такие ошибки намного проще.

SELECT table1.col1, table2.col2 
FROM   table1 
       INNER JOIN table2 ON table1.col1=table2.col6 
WHERE  col3 IN (
          SELECT col1 
          FROM table3 
          WHERE col4 IN (
             SELECT col4 
             FROM table4 
             WHERE col5 LIKE '%XYZ%'
          )
       ) 
ORDER BY table1.col1
2 голосов
/ 11 февраля 2012

Попробуйте переместить ваше объединение на шаг впереди пункта WHERE:

    SELECT table1.col1, table2.col2
    FROM table1
    INNER JOIN table2 ON table1.col1=table2.col6
    WHERE col3
    IN(SELECT col1 FROM table3 WHERE col4 IN(SELECT col4 FROM table4 WHERE col5 LIKE '%XYZ%'))
    ORDER BY table1.col1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...