[pgsql-jp: 40146] countを含む結果と別テーブルを比較したい

TAKENAKA, Akikazu akikazu @ equal1.net
2010年 1月 20日 (水) 19:30:30 JST


神奈川の竹中と申します。
お世話になります。

あるテーブルのcount(*)の結果と、別のテーブルのint型のデータを比較したいのですが、うまくいかずに困っております。

環境はこちらです。
PostgreSQL 8.1.11 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC)
4.1.2 20070626 (Red Hat 4.1.2-14)

下記のような2つのテーブルがあります。
CREATE TABLE entry_table (
entry_id INT,
category TEXT
);
CREATE TABLE category_table (
category TEXT,
num INT
);

entry_tableでは、各entry_idについて"A"〜"Z"のいずれかのcategoryが登録されています。
category_tableでは、各categoryについて何件のentryの登録があるかをnumに記録しています。
しかし、numの値が正確でない可能性が発生したので、実際の件数と比較をしようと思いました。

実際の件数は、下記で取得できます。
SELECT DISTINCT category, count(*)
FROM entry_table
GROUP BY category;

ここで取得するcountの値を、下記で取得できるnumと並べて比較したいのです。
SELECT category, num
FROM category_table;

下記をはじめ色々と試してみたのですが、どうにもうまくいきません。
SELECT DISTINCT e.category, count(*), num
FROM entry_table e
LEFT OUTER JOIN category_table c
ON e.category=c.category
GROUP BY e.category;

各categoryと、それに対応するcountとnumを同時に取得したいのですが、何か根本的に間違っているのでしょうか…?

初歩的なことかもしれず恐縮なのですが、どなたかご教授いただければ幸いです。
よろしくお願いいたします。


-- 
竹中 彰一 (TAKENAKA, Akikazu)
akikazu @ equal1.net | twitter.com/equal1
Skype: equal1.at | iPhone: +81-90-8477-3901



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