Почему таблица в операторе WITH возвращает только конкретную строку, когда ключевое поле добавлено в операторе AND? - PullRequest
0 голосов
/ 19 мая 2019

Привет, у меня возникла странная проблема при выборе имени таблицы (QUERY3) внутри предложения WITH с использованием оракула ... показано ниже (я сократил пример, но сохранил тот же синтаксис).

WITH QUERY0 AS (
  SELECT...
  FROM ...
  WHERE...
  AND... 
),
QUERY1 AS 
  SELECT... 
  FROM...
  WHERE...
  AND...
),
QUERY2 AS (
  SELECT... 
  FROM...
  WHERE...
  AND...
),
QUERY3 AS (
  SELECT... 
  FROM...(so this is the main query and selects from QUERY1 and QUERY2
  WHERE...
  AND...
)
SELECT P.*
FROM ANOTHER_TABLE AN, QUERY3 P
WHERE (P.PRODUCT_NAME LIKE 'IA%' OR P.PRODUCT_NAME LIKE 'ERSK%')
AND ((P.DT IS NULL) OR (P.DT >= AN.DT))
AND P.PROP_ID = 123456
--this works, returns the expected row starting with prop_id 123456,    all good until I remove this AND.

ПРОБЛЕМА - Оператор Select, расположенный непосредственно выше, возвращает строку prop_id 1234546, только когда AND 'P.PROP_ID = 123456' введено, если пропущено, строка не возвращается в результатах!

, например

SELECT P.*
FROM ANOTHER_TABLE  AN, QUERY3 P
WHERE (P.PRODUCT_NAME LIKE 'IA%' OR P.PRODUCT_NAME LIKE 'ERSK%')
AND ((P.DT IS NULL) OR (P.DT >= AN.DT))

Это не возвращает строку 123456 ... но, безусловно, если она находится в результатах QUERY3, она должна отображаться, добавляю ли я AND P.PROP_ID = 123456 ... или нет?!?

Очевидно, что я, должно быть, что-то неправильно понимаю, если кто-то может помочь, это будет с благодарностью !!

Приветствия

JT

...