我有这些表设置:
提名:奖项提名表
NOMINATION_NOMINEES:NOMINATIONS.ID
许多被提名人可以通过身份证领域提及一个提名。
SELECT a.*, COUNT(SELECT all records from NOMINATION_NOMINEES with this ID) AS "b"
FROM NOMINATIONS a
LEFT JOIN NOMINATION_NOMINEES b on a.ID = b.ID
结果如下:
ID | NOMINATION_DESCRIPTION | ...... | NUMBER_NOMINEES
其中NUMBER_NOMINEES是NOMINATION_NOMINEES表中包含当前行ID的行数。
这是一个棘手的问题,我们将它提供给一个更大的系统,所以我希望在一个带有一些子查询的查询中得到它。实现子查询已经扭曲了我的想法。任何人都知道在哪里可以解决这个问题?
我确信上面的方法并不接近这个方法,但我不能完全围绕这个方法。
答案 0 :(得分:2)
可以使用single correlated sub-query in SELECT
clause完成。
SELECT a.*,
( SELECT COUNT(b.ID) FROM NOMINATION_NOMINEES b WHERE a.ID= b.ID )
FROM NOMINATIONS a
答案 1 :(得分:2)
您应该可以将count
用作analytic function
:
select a.*,
count(b.id) over (partition by b.id)
from nominations a
left join nomination_nominees b on a.id = b.id