2013-06-30 2 views
1

Count와 같이 Having을 사용할 때와 같이 집계 함수를 사용하는 쿼리 작성시 문제가 있습니다. People (id and name) 및 Books (bookid, author_id, title)의 두 테이블이 있습니다. 여기서 author_id는 People ID의 외래 키입니다. 나는 현재 모든 사람이 책을 쓴 사람이 아니라 모든 사람이 책을 저에게 돌려주는 쿼리를 가지고 있습니다. sql이 (가) Count by group by 및 with with

SELECT People.name, 
     Books.title 
FROM People, 
    Books 
WHERE Books.author_id = People.id; 

는 지금은 2 개 이상의 도서를 작성하고 같은 정보 (people.name 및 books.title)를 선택해야 만 사람을 찾기 위해 노력하고 있어요,하지만 난 가겠어요 방법으로 혼란 스러워요 이. 나는 HAVING 카운트 (People.name)> 1을 사용하려고 노력했지만, 내가 선택한 것은 확실히 정확하지 않습니다.

SQL 쿼리를 사용하여 이러한 추가 매개 변수를 추가 할 때 새로운 기능을 제공하며 특히 나를 도와 줄 수 있는지 궁금합니다. 나는이 조건들로 어떤 쿼리 예제도 보지 못했다.

답변

3

당신의 표 방식으로 가입하는 것이 좋습니다 :

SELECT People.name, Books.title 
FROM People INNER JOIN Books ON Books.author_id = People.id; 

그리고 당신이로 HAVING 절을 추가 할 수 있습니다 : 다음

SELECT Books.author_id 
FROM Books 
GROUP BY Books.author_id 
HAVING COUNT(*)>=2 

은 당신이 사용할 수있는 당신이 필요로하는 모든 정보를 선택 :

SELECT People.name, Books.title 
FROM People INNER JOIN Books ON Books.author_id = People.id 
WHERE People.ID IN (
    SELECT Books.author_id 
    FROM Books 
    GROUP BY Books.author_id 
    HAVING COUNT(*)>=2 
) 
2
SELECT People.name, 
     Books.title 
FROM People, 
    Books 
WHERE Books.author_id = People.id 
    and exists (select 1 
       from (
       SELECT People.name name 
       FROM People, 
         Books 
       WHERE Books.author_id = People.id 
       group by Pepole.name 
       having count(People.name)>1 
      ) temp 
       where temp.name = People.name)