架构信息:
关注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;
答案 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
。