[pgsql-jp: 39458] Re: 0 件でも表示

ゆむ qqqz9b69 @ green.ocn.ne.jp
2008年 6月 21日 (土) 22:29:25 JST


私としては↓の方が初心者にはイメージが付きやすように思いますが如何でしょう。

SELECT code, name, COALESCE(cnt, 0)
 FROM category
  LEFT OUTER JOIN (SELECT code, count(*) AS cnt FROM article GROUP BY code
                  ) USING(code)
 ORDER BY 1;


結合してからの集計方法が分からなければ、
集計してから結合すれば良い。

-- 
ゆむ

↓↓↓↓↓↓↓↓↓ Original Message ↓↓↓↓↓↓↓↓↓
From:    HOTTA Michihide <hotta @ net-newbie.com>
To:      PostgreSQL Japanese Mailing List <pgsql-jp @ ml.postgresql.jp>
Date:    Sat, 21 Jun 2008 13:57:29 +0900
Subject: [pgsql-jp: 39457] Re: 0 件でも表示
- - - - - - - - - - - - - - - - - - - - 
> 堀田@長崎市です。
> 
> From: s-koga @ pi.jp.nec.com
> To: PostgreSQL Japanese Mailing List <pgsql-jp @ ml.postgresql.jp>
> Date: Thu, 19 Jun 2008 23:12:18 +0900
> Subject: [pgsql-jp: 39443] Re: 0 件でも表示
> 
> > いつもお世話になっております。
> > 古賀@教育ビジネス部.NECソフトウェア九州です。
> 
> 御社のLinux講習テキストには、公私共々お世話になっております m(__)m
> 
> > ↓これでいかがでしょう?
> > 
> > SELECT DISTINCT
> >     category.code
> >   , name
> >   , count(*)
> > FROM  category LEFT OUTER JOIN article
> > ON  category.code = article.code
> > GROUP BY    category.code, category.name;
> 
> これだと、以下のようになりました。記事のない cat-3 についての件数
> も1としてカウントされてしまうようです。
> 
>  code | name  | count
> ------+-------+-------
>     1 | cat-1 |     2
>     2 | cat-2 |     2
>     3 | cat-3 |     1
>     4 | cat-4 |     1
> (4 行)
> 
> From: s-koga @ pi.jp.nec.com
> To: PostgreSQL Japanese Mailing List <pgsql-jp @ ml.postgresql.jp>
> Date: Thu, 19 Jun 2008 23:36:12 +0900
> Subject: [pgsql-jp: 39444] Re: 0 件でも表示
> 
> > SELECT 
> >     category.code
> >   , name
> >   , count(article.code)
> > FROM  category LEFT OUTER JOIN article
> > ON    category.code = article.code
> > GROUP BY category.code, category.name
> > ORDER BY 1
> 
> これでうまくいきました。ありがとうございます。
> count(article.code) なんてのを思いつくようになるには、相当経験を
> 積まないといけないみたいです。。。
> 
> >>SELECT DISTINCT
> >>    category.code
> >>  , name
> >>  , count(*)
> >>FROM   category,article
> >>WHERE  category.code = article.code
> >>GROUP BY    category.code, category.name;
> >>
> >> code | name  | count
> >>------+-------+-------
> >>    1 | cat-1 |     2
> >>    2 | cat-2 |     2
> >>    4 | cat-4 |     1
> >>(3 行)
> >>
> >>こうすると、記事のない cat-3 については出力されません。
> >>
> >> code | name  | count
> >>------+-------+-------
> >>    1 | cat-1 |     2
> >>    2 | cat-2 |     2
> >>    3 | cat-3 |     0
> >>    4 | cat-4 |     1
> >>(4 行)
> >>
> >>後者のように出力したいのですが、どうすればよいでしょうか?
> >>JOIN を使うんじゃないかなーとは思ってるんですが…。
> 
> -- 
> HOTTA Michihide <hotta @ net-newbie.com>
↑↑↑↑↑↑↑↑ Original Message Ends↑↑↑↑↑↑↑↑




pgsql-jp メーリングリストの案内