У меня есть следующая структура таблицы:
dbo.Owner
OwnerID OwnerName
1 John
2 Marie
3 Alex
и dbo.Pet
PetID PetTag Status OwnerID
1 A341 Active 1
2 A342 Inactive 1
3 A343 Active 2
4 A345 Active 2
Мне нужно вернуть всех владельцев, у которых есть только активные домашние животные или нет домашних животных.
Итак, в этом примере выше мне нужно вернуть владельца 2 (все домашние животные активны) и владельца 3 (без домашних животных)
Я буду извлекать данные на С# с помощью Entity Framework, но простого SQL будет достаточно.
Вот что я придумал до сих пор:
select mi.* from Owner o
join Pet p
on o.OwnerID= p.OwnerID
where o.Status='Active'
union select * from Owner
where OwnerID not in (select OwnerID from Pet)
Теперь этот запрос выше работает, но он включает OwnerID = 1. И также мне было интересно, есть ли способ сделать это в 1 запросе без объединения.