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

HOTTA Michihide hotta @ net-newbie.com
2008年 6月 21日 (土) 13:27:13 JST


堀田@長崎市です。

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>



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