求一条统计的sql语句

t_kong 发布于 2013/11/20 16:09
阅读 228
收藏 0

有两个表如下:                  

表一 b_sign(登记表)
date(日期) b_id(产品编号) b_name(产品名称)
2013-1-1 111 产1
2013-2-1 222 产2
2013-11-11 111 产1
2013-5-15 333 产3
2013-1-16 111 产1
2013-9-1 111 产1
2013-8-4 222 产2
 
表二 t_product(产品表)
p_id(产品编号) p_name(产品名称) p_add(产品出版地)
111 产1 广东
222 产2 北京
333 产3 上海
444 产4 西藏

就是想统计登记表中每个产品的登记次数,开始的时候写成:

select count(b_name) 登记次数,b_name 产品名称 from b_sign group by b_name

结果是:

登记次数 产品名称
4 产1
2 产2
1 产3
但是后来感觉不科学啊,第一,显示的不够完整;第二,如果存在不同编号,同名的产品,统计就错了。

请问:如果想得到下面的效果,sql语句应该如何写?

登记次数 产品名称 产品出版地
4 产1 广东
2 产2 北京
1 产3 上海

加载中
0
LucEsape
LucEsape
select count(b_name) 登记次数,b_name 产品名称 , t_product.p_add 产地
from b_sign ,t_product
where b_sign.p_id = t_product.p_id
group by b_name
0
t
t_kong

引用来自“青柠柚子”的答案

select count(b_name) 登记次数,b_name 产品名称 , t_product.p_add 产地
from b_sign ,t_product
where b_sign.p_id = t_product.p_id
group by b_name
这个...不行吧,语法上有错误。
LucEsape
LucEsape
列别名。。。
0
tim_spac
tim_spac

select cnt as 登记次数
    , p_name as 产品名称
    , p_add as 产品出版地
from (
    select b_id, count(1) as cnt
    from b_sign
    group by b_id
) as a
join t_product b on a.b_id = b.p_id



0
蕃薯哥哥
蕃薯哥哥
select 
t1.c 
,t1.bname
,t2.p_add
from
(
select
count(b_name)  AS c
,b_name AS bname
,b_id AS bid
from 
b_sign
group by b_name
) t1
,t_product t2
where

t1.bid = t2.p_id


没测试过。。。。。不知道对不对

0
t
t_kong

引用来自“李崇”的答案

select 
t1.c 
,t1.b_name
,t2.p_add
from
(
select
count(b_name)  AS c
,b_name AS bname
,b_id AS bid
from 
b_sign
group by b_name
) t1
,t_product t2
where

t1.bid = t2.p_id


没测试过。。。。。不知道对不对

select 
count(b_name)  AS c 
,b_name AS bname 
,b_id AS bid 
from  
b_sign 

group by b_name 

思路是对的,但是中间这一条应该不行。谢谢。

0
LucEsape
LucEsape
SELECT
	count(b_name) 登记次数,
	b_name 产品名称,
	t_product.p_add 产地
FROM
	b_sign,
	t_product
WHERE
	b_sign.B_id = t_product.p_id
GROUP BY
	b_name
---没错的。




t
t_kong
是喔....对不起,是我搞错....非常感谢你们,呵呵
返回顶部
顶部