Oracle SQL:选择all,加上带有复杂查询的额外列

时间:2016-03-08 00:52:43

标签: sql database oracle

我有这些表设置:
提名:奖项提名表 NOMINATION_NOMINEES:NOMINATIONS.ID

上具有FK的用户表

许多被提名人可以通过身份证领域提及一个提名。

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的行数。

这是一个棘手的问题,我们将它提供给一个更大的系统,所以我希望在一个带有一些子查询的查询中得到它。实现子查询已经扭曲了我的想法。任何人都知道在哪里可以解决这个问题?

我确信上面的方法并不接近这个方法,但我不能完全围绕这个方法。

2 个答案:

答案 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