Почему этот запрос приводит к «отсутствующему предложению FROM»? - PullRequest
0 голосов
/ 22 ноября 2018

Почему ниже оператора sql постоянно пропускается запись предложения FROM для ошибки таблицы?
Как это настроить?

WITH SUBID AS (
    SELECT * FROM "B_COLLECTION"."COLL_C_RECORD"
),
TR AS (
  SELECT * FROM "B_TRACE"."PERSONAL_TC_RECORD"
)
SELECT "SUBJECT_C_ID" 
FROM "B_COLLECTION"."COLL_C_RECORD"
WHERE ( SUBID.SUBJECT_ID = TR.PERSONAL_S_ID ) 
  AND ( TR.STATE_ID ='5' OR TR.STATE_ID  = 'A' OR TR.STATE_ID = 'C');

1 Ответ

0 голосов
/ 22 ноября 2018

Вы объявляете SUBID и TR просто отлично, но так как это таблицы, ваш оператор выбора еще их не знает.

Здесь вам нужно ввести SUBID и TR в предложениях FROM вашего запроса.Он должен выглядеть примерно так:

WITH SUBID AS (
        SELECT * FROM "B_COLLECTION"."COLL_C_RECORD"
                  ) ,
        TR AS (
                      SELECT * FROM "B_TRACE"."PERSONAL_TC_RECORD"
                  )
SELECT "SUBJECT_C_ID" FROM SUBID
WHERE SUBID."SUBJECT_ID" IN 
   (SELECT "PERSONAL_S_ID" FROM TR
    WHERE TR."STATE_ID" = '5'
    OR TR."STATE_ID" = 'A'
    OR TR."STATE_ID" = 'C');

. Поэтому вы используете предложение WITH только при повторяющихся запросах.Здесь было бы гораздо приятнее использовать:

SELECT "SUBJECT_ID" FROM "B_COLLECTION"."COLL_C_RECORD" SUBID
WHERE SUBID."SUBJECT_ID" IN 
  (SELECT "PERSONAL_S_ID" FROM "B_TRACE"."PERSONAL_TC_RECORD" TR
   WHERE TR."STATE_ID" = '5'
   OR TR."STATE_ID" = 'A'
   OR TR."STATE_ID" = 'C');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...