我有 3 张桌子:
表 A:
- id int
- 值 varchar
表 B:
- id int
- a_id 默认为空
表 C:
- id int
- a_id 不为空
我需要按 A.value 对 B 行和 C 行的数量进行分组:
+---------+----------------------+----------------------+
| A.value | COUNT(DISTINCT B.id) | COUNT(DISTINCT C.id) |
+---------+----------------------+----------------------+
| NULL | 100 | 0 |
| 1 | 543 | 324 |
...
问题是 B 表有一个可为空的外键,而 C.a_id 不能为空。因此,经过一小时的尝试,我无法获得正确的查询。C.a_id 正在丢失或 B.a_id。
获得它的正确方法是什么?