SQL统计查询,求帮助

布谷鸟 发布于 2013/05/14 12:14
阅读 253
收藏 0


表 product

create table product
(
id int,
name char,
category int,
)

表 category

create table category
(
id int,
name char,
)

现在我需要统计每个category的id在product中出现的次数(包含0次)并排序,应该如何写呢?麻烦会的朋友能提供帮助,感激不尽!

 我需要得到的结果为分类表category中的所有id,包含产品表product中尚未存在的id,并非单表统计,所以这个似乎有些麻烦,难的不会,会的不难吧,恳请朋友们指点

加载中
0
mark35
mark35

SELECT c.id, coalesce(t.ct, 0) FROM category c
	LEFT JOIN (
		SELECT count(category) ct, category cid FROM product GROUP BY category
	) t ON t.cid = c.id



布谷鸟
布谷鸟
回复 @mark35 : sql好多关键字我总是不知道怎么用,理解好困难
mark35
mark35
回复 @布谷鸟 : 对于在product表中不存在的category左连接到category表后字段值是null
mark35
mark35
回复 @布谷鸟 : coalesce() 函数替换null值为第二个参数值
布谷鸟
布谷鸟
多谢,虽然coalesce我完全不理解!
0
布谷鸟
布谷鸟
我sql很差劲呐,哪位朋友能指点指点捏
0
黄龍
黄龍

select COUNT(1),category from product group by category

排序自己弄

布谷鸟
布谷鸟
哦,我要的并非如此的结果,我希望得到的是在表Categroy中所有id结果,如果单表查询排序,就没有那么麻烦了
0
黄龍
黄龍

select COUNT(1),category category from product a
right join category b on a.category = b.id
 group by a.category

自己对category 空值处理一下

布谷鸟
布谷鸟
你好,能解释下么?表category的id,如果没有在product中出现过至少一次,那么我还是无法得到全部的分类id哦
0
excepiton
excepiton

ORACLE:

select c.id,nvl(p.cnt,0) from (select category,count(1) from product group by category ) p right join category c on (c.id=p.category)

返回顶部
顶部