oracle sql error - отсутствует правая скобка - PullRequest
0 голосов
/ 16 ноября 2011

Я прочитал почти все похожие на мои вопросы и не нашел ответа.

Я написал запрос к базе данных лошадей. Там я хочу составить список лошадей, которые никогда не заканчивали первыми в любом из их участия во всех встречах, в которых они участвовали. Мой запрос:

SELECT H1.Horse_ID,H1.H_compressed_name

FROM Horse H1

WHERE NOT EXISTS

      ((SELECT P1.Part_ID

       FROM participation P1)

       EXCEPT(  --line *

          SELECT P2.Part_ID

          FROM participation P2,Horse H2

          WHERE P2.H_ID=H2.Horse_ID AND P1.Part_ID=P2.Part_ID  
                AND H1.Horse_ID=H2.Horse_ID));

Я получаю эту ошибку:

SQL Error: ORA-00907: missing right parenthesis 
00907. 00000 -  "missing right parenthesis" 
*Cause:     
*Action: 

в строке *.

Но я не уверен, если проблема действительно в отсутствии правильной круглой скобки. Любая помощь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Эквивалентом Oracle EXCEPT является MINUS - также не требуется ссылка из набора исключений в набор исключений, и я думаю, что некоторые из скобок могут быть избыточными в запросе в вопросе; Я предлагаю следующее:

SELECT H1.Horse_ID,H1.H_compressed_name
FROM Horse H1
WHERE NOT EXISTS
      (SELECT P1.Part_ID
       FROM participation P1
       MINUS
       SELECT P2.Part_ID
       FROM participation P2,Horse H2
       WHERE P2.H_ID=H2.Horse_ID AND 
             H1.Horse_ID=H2.Horse_ID);

- исправить запрос, хотя я не думаю, что он вернет искомый результат.

0 голосов
/ 16 ноября 2011

Согласился с другим постером, что ИСКЛЮЧЕНИЕ является проблемой.Интересно, если он пытается найти:

SELECT H1.Horse_ID,H1.H_compressed_name
FROM Horse H1
WHERE NOT EXISTS
      (SELECT P1.Part_ID
       FROM participation P1
       WHERE NOT EXISTS (  --line *
          SELECT P2.Part_ID
          FROM participation P2,Horse H2
          WHERE P2.H_ID=H2.Horse_ID AND P1.Part_ID=P2.Part_ID  
                AND H1.Horse_ID=H2.Horse_ID));

В этом случае есть лишняя левая скобка, вызывающая конкретную ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...