Поскольку я новичок в SQL, я не могу описать проблему простым способом, поэтому позвольте мне показать вам пример:
3 таблицы:
ПРОДУКТ
GROUP
PERSON
Как видите, GROUP может иметь несколько ЧЕЛОВЕК, а ПРОДУКТ может быть связан с GROUP и PERSON.
С этого момента я бы хотел посчитать количество ЛИЦ, имеющих ПРОДУКТ в ГРУППЕ
Я не совсем понимаю фон IN или использую другой SELECT в рамках FROM, поэтому, если в этом суть, то я счастлив, что я был на шаг раньше, чем это.
SELECT
group.name as GROUP_name,
COUNT(DISTINCT person_id) AS PERSON_having_min_one_PRODUCT
FROM products
LEFT JOIN groups ON groups.id = products.group_id
LEFT JOIN persons ON persons.id = products.person_id;
С этими данными:
GROUP
ExampleGroupName1 has 3 PERSONs, but 2 of them has >0 PRODUCTS
ExampleGroupName2 has 3 PERSONs and all of them has >0 PRODUCTS
ExampleGroupName3 has 2 PERSONs, but none of them has the PRODUCT
ExampleGroupName4 has 2 PERSONs, but only 1 has >0 PRODUCT
Я бы хотел получить такой вывод:
GROUP_name | PERSON_having_min_one_PRODUCT
ExampleGroupName1 | 2
ExampleGroupName2 | 3
ExampleGroupName4 | 1