2016-06-07 3 views
0

내가 작업하고있는이 프로젝트의 게시자가 발행 한 대부분의 책이 포함 된 ID (또는 *, 무엇이든)를 선반에서 가져와야합니다. 쿼리를 올바르게 가져 오는 것이 중요합니다. 나는 일반 SQL을 사용하고있다.다른 엔티티의 최대 속성을 가진 행 선택

다음은 내 데이터베이스가 어떻게 설정되고, 단순화되었는지 보여주는 다이어그램입니다. Diagram of the database 편집 : entity_3은 게시자가되어야합니다.

답변

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 
관련 문제