У меня есть запрос, который приводит к такой таблице:
guardian_id | child_id | guardian_name | relation | child_name |
------------|----------|---------------|----------|------------|
1 | 1 | John Doe | father | Doe Son |
2 | 1 | Jane Doe | mother | Doe Son |
3 | 2 | Peter Pan | father | Pan Dghter |
4 | 2 | Pet Pan | mother | Pan Dghter |
1 | 3 | John Doe | father | Doe Dghter |
2 | 3 | Jane Doe | mother | Doe Dghter |
Итак, из этих результатов мне нужно сосчитать семьи. То есть разные дети с одинаковыми опекунами. Из результатов выше, есть 3 детей, но 2 семьи. Как мне этого добиться?
Если я сделаю:
SELECT COUNT(DISTINCT child_id) as families FROM (
//larger query
)a
Я получу 3, что не правильно.
В качестве альтернативы, как я могу включить предложение WHERE
, которое проверяет DISTINCT
guardian_id? Любые другие подходы?
Также обратите внимание, что есть случаи, когда у ребенка может быть только один опекун.