的Oracle SQL:选择所有,再加上复杂的查询

问题描述:

我有这些表建立一个额外的列:
提名:提名奖的表格
NOMINATION_NOMINEES:与FK用户对NOMINATIONS.ID的表的Oracle SQL:选择所有,再加上复杂的查询

一个提名可以被许多被提名者通过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的行数。

这是一个很微妙的,我们是喂养这个到更大的系统,所以我希望能与一帮子查询得到这个在一个查询。在这里实现子查询扭曲了我的想法。任何人都知道应该在哪里解决这个问题?

我敢肯定,上述方式不靠近一个体面的方式来这一个,但我不能完全包住我的脑海里围绕这一。

它可以用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 

您应该能够使用countanalytic function

select a.*, 
     count(b.id) over (partition by b.id) 
from nominations a 
     left join nomination_nominees b on a.id = b.id