2011-11-08 24 views
0

我有两个表:如何计算重复的条目在列

提供者:

PROV_NO  P_NAME 
---------- ---------- 
    P10   ANTEL 
    P20   BCORP 
    P30   CBIZ 

服务:

S_TYPE PROV_NO R_PRICE 
------- -------- --------- 
    1  P10  160 
    2  P10  180 
    3  P10  110 
    1  P20  190 
    2  P20  180 
    3  P20  150 
    4  P20  240  
    5  P20  195 
    1  P30  190 
    2  P30  210 

我试图计算服务的每个供应商提供的数并显示提供者名称旁边的每个计数。所以我想我的输出是:

P_NAME  COUNT 
--------- -------- 
ANTEL  3 
BCORP  5 
CBIZ   2 

我尝试:

select provider.p_name, count(distinct service.prov_no) 
from provider,service 
group by provider.p_name 

我已经尝试了一些方法,但我似乎无法分开计数,使他们独特的每个p_name。

谢谢。

回答

2

尝试:

select p.p_name, count(*) 
from provider p 
join service s on p.prov_no = s.prov_no 
group by provider.p_name 

变化joinleft join如果要包括没有服务供应商。

2

你缺少的连接条件,你需要删除distinct

select provider.p_name, count(*) 
from provider,service 
where provider.prov_no = service.prov_no 
group by provider.p_name 
+0

他也需要一个'COUNT(*)',而不是'计数(不同prov_no)' - 否则计数始终返回为1 –

+0

@Mark:谢谢.. – codaddict

0

你应该在你的查询已经加入条件

select provider.p_name, count(distinct service.prov_no) 
from provider join service on provider.prov_no=service.prov_no 
group by provider.p_name