質問

はpostgresで私はあなたがこのような何かを行うことができますかなり確信している。

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

基本的に、この例では、私は同じクエリで....作家とどのように多くの本それぞれが書かれたのリストを返したいと思います。

これは可能ですか?私は、このアプローチはかなりナイーブである疑いがある..

ありがとう:)

役に立ちましたか?

解決

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

ここで私はあなたが欲しいと言う結果を得るために、クエリを記述します。方法は次のとおりです。

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にあります。即ちそれはあなたが知る必要がある基本的なプログラミング構造です。

他のヒント

どのように使用する方法について参加ます:

SELECT authors.stage_name, count(*) 
FROM authors INNER JOIN books on books.author_id = authors.id
GROUP BY authors.stage_name
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top