[pgsql-jp: 39442] 0件でも表示
HOTTA Michihide
hotta @ net-newbie.com
2008年 6月 19日 (木) 21:52:37 JST
堀田@長崎市です。
CREATE TABLE category (
code INT,
name TEXT
);
INSERT INTO category VALUES(1, 'cat-1');
INSERT INTO category VALUES(2, 'cat-2');
INSERT INTO category VALUES(3, 'cat-3');
INSERT INTO category VALUES(4, 'cat-4');
CREATE TABLE article (
seq SERIAL,
code INT,
contents TEXT
);
INSERT INTO article VALUES(1, 1, 'article-1-1');
INSERT INTO article VALUES(2, 2, 'article-2-2');
INSERT INTO article VALUES(3, 2, 'article-3-2');
INSERT INTO article VALUES(4, 4, 'article-4-4');
INSERT INTO article VALUES(5, 1, 'article-5-1');
(上記は質問のためのサンプルです。かなり簡略化しました。)
こういうデータから、カテゴリごとの記事の件数を取得します。
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 メーリングリストの案内