SQL - 外键在表中出现的次数的计数

时间:2016-10-20 10:12:54

标签: sql oracle oracle11g

架构信息:SCHEMA

关注3个表:SIGHTING,SPOTTER和ORG

SIGHTING通过FK SpotterId引用SPOTTER。

SPOTTER通过FK OrgId引用ORG。

我想查询返回两列;一个用于ORG.OrgName列表,另一个用于相应ORG.OrgID的SIGHTINGS中Spotter_ID外观的总计数。

我在下面所做的工作会返回每行返回的错误计数:

SELECT ORG.ORG_NAME AS ORG_NAME,
       (SELECT COUNT(SIGHTINGS.SPOTTER_ID) 
          FROM SIGHTINGS
             , SPOTTERS 
         WHERE SIGHTINGS.SPOTTER_ID = SPOTTERS.SPOTTER_ID 
          AND SPOTTERS.ORG_ID=ORG.ORG_ID) AS ORG_COUNT 
  FROM ORG;

2 个答案:

答案 0 :(得分:1)

您似乎只需要聚合:

{{1}}

答案 1 :(得分:0)

这是简单的聚合,但您只需要一个JOIN

select o.orgname, count(*) as numSpotters
from org o join
     spotters s
     on o.orgId = s.orgId
group by o.orgname;

注意:如果您想要所有组织,即使那些没有观察员的组织,也请使用left join代替join