sarsaparilla
@sarsaparilla

Как составить запрос?

Есть список клиентов К1, К2, К3,...Кn
Каждому клиенту вешаются услуги из набора У1, У2, У3,..Уn (любые)
Как найти всех клиентов без услуги У5?

Есть записи
К1 У1
К1 У2
К1 У3
К1 У4
К1 У5

К1 меня не интересует, т.к. у него есть услуга У5
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
sarsaparilla
@sarsaparilla Автор вопроса
select distinct ctp.contract_id
from contracts c
join serve s
on c.contract_id = s.contract_id
where not exists (select *
from serve s2
where s2.contract_id = s.contract_id
and ps.periodic_serve_id = 5)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanan07
@Sanan07
Писатель-прозаик
WHERE Услуга not in ('У5')
Ответ написан
Ermako
@Ermako
Data Scientist
Положим у нас есть таблица clients с полями client_id и service_id.
Логика: находим всех, у кого есть услуга, делаем джойн и отсеиваем тех, кто под условие джойна не попал.

select distinct c.client_id
from clients c
left join (select client_id
                  from clients
                      where service_id = 5) s on s.client_id = c.client_id
where s.client_id is null
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы