Sql запрос для записей, которые имеют вход, но не выход - PullRequest
1 голос
/ 23 марта 2020

У меня есть таблица путешественников

travellers(id,full_name)

и еще одна таблица traveller_history

travellers_history(id,traveller_id,status)

Статус в travellers_history представляет собой числовое поле

Я хочу записать все путешественники, которые имеют запись статуса 11 в записях traveller_history, но не имеют записи статуса 12 в traveller_history. Как мне достичь этого в sql?

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Присоединитесь к таблицам, сгруппируйте их по путешественнику и задайте условия в предложении Имея:

select t.id, t.full_name 
from travellers t inner join travellers_history h
on h.traveller_id = t.id
group by t.id, t.full_name
having sum(h.status = 12) = 0 and sum(h.status = 11) > 0

или:

select t.id, t.full_name 
from travellers t inner join travellers_history h
on h.traveller_id = t.id
where h.status in (11, 12)
group by t.id, t.full_name
having max(h.status) = 11
1 голос
/ 23 марта 2020

Вы можете сосчитать путешественников, у которых больше "11", чем "12":

select th.traveller_id
from traveller_history th
group by th.traveller_id
having sum( status = 11 ) > sum( status = 12 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...