У меня есть следующие таблицы:Другие способы выполнения этого запроса?
Animals (animal_id, producer_id, ...)
Producers (prod_id, ...)
BoughtAnimals (animal_id (fk), ...)
, и я хотел бы сделать запрос, который говорит мне, что для каждого производителя, сколько животных она имеет, и сколько из этих животных были куплены. После долгих раздумий, я попробовал следующий подход:
select Producers.name, count (distinct A1.animal_id), count(distinct BoughtAnimals.animal_id)
from Producers, Animals A1, Animals A2, BoughtAnimals
where
Producers.nif = A1.producer_id and
Producers.nif = A2.producer_id and
BoughtAnimals.animal_id = A2.animal_id
group by Producers.name;
, но я сделал это только методом проб и ошибок, и мне трудно рассуждать о нескольких таблиц животных сразу. Есть ли другой подход, чтобы сделать этот запрос? Или это обычный способ сделать это?
Вы поймете, как делать запросы лучше, если вы прекратите использовать неявный синтаксис и узнаете о объединениях. – HLGEM