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

Yoshiaki Yanagimoto yanagimoto @ ask-art.jp
2010年 1月 20日 (水) 20:08:53 JST


柳本です。

select e.category, e.cnt, c.num
from
(select category, count(*) as cnt
 from entry_table
 group by category) e
left outer join category_table c
on (e.category = c.category)
order by e.category asc;

こんな感じでしょうか?

(2010/01/20 19:30), TAKENAKA, Akikazu wrote:
> 神奈川の竹中と申します。
> お世話になります。
> 
> あるテーブルの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を同時に取得したいのですが、何か根本的に間違っているのでしょうか…?
> 
> 初歩的なことかもしれず恐縮なのですが、どなたかご教授いただければ幸いです。
> よろしくお願いいたします。
> 
> 




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