1

集計関数 (Count などや、Having を使用する場合など) を含むクエリを作成する際に問題が発生します。People (id と name) と Books (bookid、author_id、title) の 2 つのテーブルがあります (ここで author_id は People id の外部キーです)。私は現在、本を書いたすべての人を返すクエリを持っています (すべての人が本を書いたわけではありません)。

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

現在、2冊以上の本を書いて同じ情報(people.nameとbooks.title)を選択している人だけを見つけようとしていますが、どうすればいいのか混乱しています。私は HAVING count(People.name) > 1 を使用しようとしましたが、取得した選択は間違いなく正しくありません。

特にクエリにこれらの追加パラメーターを配置する場合は、SQL を使用するのが初めてで、誰かが私を助けてくれるかどうか疑問に思っていました。これらの条件を使用したクエリの例は実際には見たことがありません。

4

2 に答える 2

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
)
于 2013-06-30T14:09:47.733 に答える
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)
于 2013-06-30T14:10:45.937 に答える