SQL Проблема запроса: Найти всех животных, которые едят всех животных, кроме себя
Я написал следующий запрос и дал результаты, но я хотел бы знать
Есть ли другой лучший подход?
SQL Запрос -
select * from [dbo].Animal a
where (
(
(select COUNT(distinct id) from [dbo].Animal b
where b.id <> a.id)
=
(select COUNT(*) from [dbo].Food
where pId = a.id and aId <> a.id)
)
AND
(select COUNT(*) from [dbo].Food
where pId = a.id and aId = a.id) = 0
)
Таблица животных
id name
--------
1 Ant
2 Bear
3 Cat
4 Dog
Таблица продуктов питания (здесь pId is predatorId)
pId aId
-------
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 4