1

ポストグレスでは、私はあなたがこのようなことをすることができるとかなり確信しています

SELECT
  authors.stage_name, 
  count(select id from books where books.author_id  = authors.id) 
FROM
  authors,
  books;

基本的に、この例では、著者のリストと、それぞれが書いた本の数を同じクエリで返したいと思います。

これは可能ですか?このアプローチはかなりナイーブだと思います。

ありがとう :)

4

2 に答える 2

1

一つには、その著者がその本を書いたかどうかに関係なく、すべての著者のデカルト積をすべての本に返します。

これがあなたが望む結果を得るために私がクエリを書く方法です:

SELECT a.stage_name, COUNT(b.id)
FROM authors a
  LEFT OUTER JOIN books b ON (a.id = b.author_id)
GROUP BY a.id;

SQLを使用する場合は、結合クエリの記述方法を学ぶ必要があります。結合はSQLへのループであり、アプリケーションプログラミング言語へのループです。つまり、それはあなたが知る必要のある基本的なプログラミング構造です。

于 2008-12-11T19:51:37.053 に答える
0

結合を使用するのはどうですか?

SELECT authors.stage_name, count(*) 
FROM authors INNER JOIN books on books.author_id = authors.id
GROUP BY authors.stage_name
于 2008-12-11T19:51:27.847 に答える