从另一个实体中选择具有max属性的行

时间:2016-06-07 16:10:14

标签: sql oracle-sqldeveloper

我需要从书架上获取一个id(或*,无论如何),其中包含出版商为我正在进行的这个项目发布的大多数书籍,但我无法理解查询权利。我使用普通的SQL。

下面是我的数据库如何设置,简化的图表。 Diagram of the database 编辑:entity_3应该是发布者,我的不好。

1 个答案:

答案 0 :(得分:0)

这应该这样做,但由于您可能会获得多个具有相同最大数量的货架,因此可能会返回多个货架ID。如果这不是您想要的,您可以通过多种方式将其剪切为单个ID,例如通过在shelf_id上执行MIN()。

select b.id_shelf
  from (select s.id_shelf,        
               count(*) as sp_count      
          from shelf s,       
               book b         
         where s.id_shelf = b.id_shelf
           and b.publisher = @publisher
         group by s.id_shelf
       ) b
 where b.sp_count = (select max(a.sp_count)
                       from (select s.id_shelf,       
                                    count(*) as sp_count      
                               from shelf s,          
                                    book b        
                              where s.id_shelf = b.id_shelf
                                and b.publisher = @publisher
                              group by s.id_shelf
                            ) a
                     ) b