Использование (+) для соединения двух таблиц слева - PullRequest
0 голосов
/ 05 мая 2020

У меня есть запрос

SELECT * FROM  acc, transactions
WHERE acc.CUST_NO (+) = transactions.CUST_NO 
AND transactions.TRANS_dATE  < '01-JAN-19'
AND transactions.CUST_NO = 215529

В настоящее время, если у клиента нет транзакции, информация его учетной записи не будет отображаться при использовании указанного выше запроса. Как мне исправить это с помощью (+), чтобы создать левое соединение и показать результаты таблицы a cc, даже если транзакций нет.

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

LEFT JOIN стандартным способом:

SELECT *
FROM acc
LEFT JOIN transactions
    ON acc.CUST_NO = transactions.CUST_NO 
  AND transactions.TRANS_dATE  < '01-JAN-19'
  AND transactions.CUST_NO = 215529

Будет " показать результаты таблицы a cc, даже если транзакций нет. ".

1 голос
/ 05 мая 2020

Я предполагаю, что вы действительно хотите:

SELECT *
FROM acc a LEFT JOIN
     transactions t
     ON t.CUST_NO = acc.CUST_NO AND
        t.TRANS_DATE  < DATE '2019-01-01'
WHERE a.CUST_NO  = ;

Вы можете фильтровать CUST_NO, но фильтрация должна быть acc, а не transactions. Этот фильтр должен быть в предложении WHERE.

Я также заменил константу даты на рекомендуемый формат Oracle для литералов даты.

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