我有查询
select d.did, count ( h.did ), unique_interested
from dealer as d
left outer join house as h
on h.did = d.did
left outer join (
-- cid = customer id
select hid, count (cid) as unique_interested
from is_interested
group by hid
) as ok
on h.hid = ok.hid
group by d.did
order by d.did asc
;
应该选择每个经销商正在处理的房屋数量,以及对所述房屋感兴趣的唯一客户的数量(如每个经销商的客户数量)。即使经销商现在没有房子可以交易,这也应该发生,这就是为什么我在构建要从中选择列的表时使用left outer join
的原因。
现在,对我的数据库运行此查询将产生以下输出:
d.did count ( h.did) unique_interested
----- -------------- ----------------
1 3
2 3 1
3 0
正如您所看到的,当在最后一列生成的一个单元中有0
时,count
不会在最后一列中打印null
,而是返回null。加入(如cid is null
)
select hid, count ( cid ) as unique_interested
from is_interested
group by hid
我知道这是因为from
产生的表中有公寓,没有人感兴趣。但是不应该将产生0
而不是实际的列值{{1 }}在每种情况下?
任何关于为什么会发生这种情况的解释都将受到赞赏,因为它将引导我回答另一个问题,即“为什么我不能从is_interested表中获得每个经销商的正确唯一感兴趣的客户数量?” ,与数据库的当前状态一样,输出应类似于:
null