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)
Нет((
Есть записи
К1 У1
К1 У2
К1 У3
К1 У4
К1 У5
По вашему условию у меня останутся все кроме К1 У5
К1 У1
К1 У2
К1 У3
К1 У4
А К1 меня не интересует, т.к. у него есть услуга У5
SELECT Клиенты FROM CLIENTS K
INNER JOIN SERVICES Y ON Y.ID=K.ID
WHERE Клиенты NOT IN (
SELECT * FROM CLIENTS K
INNER JOIN SERVICES Y ON Y.ID=K.ID
WHERE Y.ID=5
)
Положим у нас есть таблица 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