ORA-00933: команда SQL не заканчивается правильно - PullRequest
0 голосов
/ 14 мая 2019

У меня есть проблема, которая беспокоила меня в течение последних двух дней. Я только начинаю оракул; Я планирую отобразить результат объединения нескольких таблиц, когда запас продуктов больше нуля. Но после ввода моего оракула запрос отображает ошибку: ORA-00933: команда SQL не завершается правильно. Я хотел бы получить максимальную помощь сообщества в этом вопросе.

"SELECT 
    APSTOCK.CDOS AS CDOS , 
    APSTOCK.CODART AS CODART , 
    APSTOCK.CODMAG AS CODMAG , 
    APSTOCK.QTESTOCK AS QTESTOCK , 
    APMAG.LIBMAG AS LIBMAG , 
    APART.LIBART1 AS LIBART1 
    FROM  APSTOCK  LEFT  JOIN APART 
    ON APSTOCK.CODART  =  APART.CODART 
    LEFT  JOIN APMAG ON 
    APSTOCK.CODMAG =  APMAG.CODMAG 
    WHERE APSTOCK.CDOS = APART.CDOS 
    AND APSTOCK.CDOS = APMAG.CDOS
    AND APSTOCK.CODART LIKE 'B%'
    OR APSTOCK.CODART LIKE 'D%'
    IN
        (SELECT 
        APSTOCK.CDOS AS CDOS , 
        APSTOCK.CODART AS CODART , 
        APSTOCK.CODMAG AS CODMAG , 
        APSTOCK.QTESTOCK AS QTESTOCK , 
        APMAG.LIBMAG AS LIBMAG , 
        APART.LIBART1 AS LIBART1 
    FROM  APSTOCK  LEFT  JOIN APART 
    ON APSTOCK.CODART  =  APART.CODART 
    LEFT  JOIN APMAG ON 
    APSTOCK.CODMAG =  APMAG.CODMAG 
    WHERE APSTOCK.QTESTOCK>0)
    ORDER BY APSTOCK.CODART ASC";

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Это IN, который терпит неудачу. Что такое в что?


Кроме того, использование OR так, как вы его использовали, может привести к неожиданным результатам. Возможно, его следует заключить в круглые скобки, например

and (apstock.codart like 'B%' or 
     apstock.codart like 'D%' 
    )
0 голосов
/ 14 мая 2019

Спасибо, ребята, за ваши ответы. Я смог исправить свой код благодаря вашим инструкциям.

   SELECT 
    APSTOCK.CDOS AS CDOS , APSTOCK.CODART AS CODART , 
    APSTOCK.CODMAG AS CODMAG , APSTOCK.QTESTOCK AS QTESTOCK , 
    APMAG.LIBMAG AS LIBMAG , APART.LIBART1 AS LIBART1 
FROM  APSTOCK  LEFT  JOIN APART 
    ON APSTOCK.CODART  =  APART.CODART 
    LEFT  JOIN APMAG ON 
    APSTOCK.CODMAG =  APMAG.CODMAG 
    WHERE APSTOCK.CDOS = APART.CDOS 
    AND APSTOCK.CDOS = APMAG.CDOS
    AND (APSTOCK.CODART LIKE 'B%'
    OR APSTOCK.CODART LIKE 'D%')
    AND APSTOCK.QTESTOCK>0 
ORDER BY APSTOCK.CODART ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...