【发布时间】:2011-04-21 18:26:30
【问题描述】:
如果标题含糊不清,我深表歉意,但我想不出一个好的方法来命名这个问题。
在我的数据库中,我有一个连接表 A 和 B 的表 J。也就是说,J 有列 a_id 和 b_id 分别保存 A 和 B 中条目的 id。 B 也有一个“代码”列;例如,假设有三个条目,代码分别为“CC”、“DD”和“EE”。
现在,我想编写一个查询,列出 B 中每种类型的代码有多少 A(有多少 A 有 'CC',有多少有 'DD',有多少有 'EE')。
我按如下方式编写该查询,并得到以下输出(当然是伪造的数据——按字母代码顺序排序):
SELECT b.CODE as code, COUNT(*) AS COUNT FROM a, b, j
WHERE j.a_id = a.id AND j.b_id = b.id
GROUP BY b.CODE ORDER BY b.CODE
code | count
==============
CC | 5
DD | 10
EE | 2
当我在 B 中添加一条新记录时会出现问题,比如代码为“FF”。现在,我在 J 中没有指向代码“FF”的条目。所以在输出中,我想包含“FF”,但显示计数为 0(没有 A 连接到“FF”)。
code | count
==============
CC | 5
DD | 10
EE | 2
FF | 0
但是,对于我当前的查询,它并没有这样做,实际上忽略了结果计数为 0 的所有代码。
那里的任何查询大师可以帮助我更改我的查询以包括所有代码的计数,无论它们是否为 0?将不胜感激。
- 伊恩
【问题讨论】: