【发布时间】:2013-01-15 17:48:54
【问题描述】:
我有 3 张桌子:
表 A:
- id int
- 值变量
表 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。
获得它的正确方法是什么?
【问题讨论】:
-
我尝试了 RIGHT JOIN B,它检索了前两列。但是 C 上的下一个连接会破坏一切,因为 C 可以有 B 中缺少的 a_id
-
你在哪个元素上加入 C 表? (B.a_id 或 A.id)
标签: mysql