SQL для извлечения данных из 2 таблиц только с использованием Join, где нам также нужны пустые записи из второй таблицы - PullRequest
0 голосов
/ 13 февраля 2019

У нас есть ситуация, когда одна часть нашей хранимой процедуры должна быть заполнена запросом join , в котором есть несколько фильтров.Нам нужно решение только с помощью join (это легко реализовать в подзапросе, но наша ситуация требует, чтобы оно было join [так как за процедурой следует предложение where])

У нас есть две таблицы Customer и Order.Нам нужно исключить строки таблицы Customer, если присутствует Customer_id, таблица заказов & order_code = 10 & Customer.Grade = 3. Не обязательно, чтобы все Customer_id присутствовали в таблице заказов, но мы все еще нуждаемся в этом в конечном результате..

   Customer Table                             OrderTable
Customer_id     Grade                   Customer_id     order_code 
 1                3                            1            10
 2                3                            1            40                                
 3                2                            2            50                        
 4                3                            3            30

* В OrderTable может присутствовать несколько Customer_id

Ожидаемый результат:

Customer_id     Grade
    2            3    
    3            2        
    4            3

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Я думаю, что это может быть то, что вам нужно, но я не уверен, что правильно понял вопрос.

select c.id, c.grade from customer c left join customer_order o on (c.id = o.customer_id and o.order_code <> 10) where c.grade = 3

Это должно дать вам всех клиентов с 3-й степенью, у которых также есть заказы.при условии, что код заказа не равен 10. Если вы хотите показать клиентам, у которых также нет заказов, сделайте это левым соединением.

0 голосов
/ 13 февраля 2019

Вы можете выразить логику так:

select c.*
from customers c
where not (grade = 3 and
           exists (select 1
                   from orders o
                   where o.customer_id = c.customer_id and
                         o.order_code = 10
                  )
           );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...