[pgsql-jp: 26025] Re: GROUP BY などについて

堀江 芳樹 yoshiki @ presence-inc.jp
2002年 5月 19日 (日) 03:47:02 JST


岩田さん、このようなところでお会いするとは、堀江です。

ご無沙汰です。

select文で、count0の項目を実行された場合、出力されないとのことですが、具
体的にfalseになってしまうということですよね。このSQL文だけでは、チョット
解りづらいような気がしますが、PHPを利用して配列変数がcount(*)ということ
ですよね。

できましたら、前後のPHP分(多分、ループしていると思うのですが・・)お聞
きいたしたいのですが・・・。
ご自分は、お解りに成ると思うのですが、・・・。

賢者の皆様、初心者の私には、これらの意味がわかりませんので、ご説明願いま
す。




Sun, 19 May 2002 00:04:53 +0900 に
Kasumi Iwata <Kasumi_Iwata @ virtems.com> さんが、書いて下さいました:

Kasumi/*はじめまして岩田と申します。
Kasumi/*
Kasumi/*早速質問ですが、下のようなテーブルを作成しまして、簡易アンケートの
Kasumi/*システムを作っています。1つの質問に対し、複数の選択肢が用意され、
Kasumi/*ユーザーはその選択肢のなかから1つ選択するというしくみです。
Kasumi/*
Kasumi/*qnは1つの質問についてのデータが入ります。
Kasumi/*qn_itemは1つの選択肢についてのデータが入ります。
Kasumi/*qn_voteは1つの回答についてのデータが入ります。
Kasumi/*
Kasumi/*アンケートの結果をグラフで表示するために、選択肢のリストと、それ
Kasumi/*に投票している人数の合計数を取り出すためのクエリーで困っています。
Kasumi/*
Kasumi/*qn_itemテーブルからcontentを取り出し、qn_voteテーブルから同じ質問
Kasumi/*(qn_vote.qn)で、同じ項目(qn_vote.item)が選択されているものを数えた
Kasumi/*いのです。
Kasumi/*
Kasumi/*<一番まともだったクエリー>
Kasumi/*SELECT   qn_item.id,count(*) 
Kasumi/*FROM      qn_item,qn_vote 
Kasumi/*WHERE    qn_item.qn=%d
Kasumi/*       AND qn_vote.qn=%d
Kasumi/*       AND qn_item.id=qn_vote.item
Kasumi/*GROUP BY qn_item.id;
Kasumi/*
Kasumi/*とするのですが、投票者がいない項目、つまりcount(*)が0のところは、
Kasumi/*出力されなくて困っています。どのようなSQL文にするのが最適かアドバ
Kasumi/*イスお願いします。
Kasumi/*
Kasumi/*クエリーを2つに分けるという手はあるのですが、なんとか1つで効率的
Kasumi/*にできないものかと思っています。
Kasumi/*
Kasumi/*ちなみにqn_item.contentを取り出したいのにidを取り出しているのは、
Kasumi/*contentのデータ型はTEXTで日本語のためか上手く動作しません。これは
Kasumi/*localeの問題だと思うのですが、クエリーが違うかも知れないので先に報
Kasumi/*告しておきます。localeの問題ならば、qn_item.idで取得の方法をお願い
Kasumi/*します。
Kasumi/*
Kasumi/*-----------------作成したテーブル------------------
Kasumi/*CREATE TABLE qn (
Kasumi/*    id              SERIAL PRIMARY KEY,
Kasumi/*    title           TEXT,
Kasumi/*    description     TEXT,
Kasumi/*    uid             TEXT,
Kasumi/*    active          BOOLEAN,
Kasumi/*    visible         BOOLEAN
Kasumi/*);
Kasumi/*
Kasumi/*CREATE TABLE qn_item (
Kasumi/*    qn      INTEGER REFERENCES qn ON DELETE CASCADE,
Kasumi/*    id      INTEGER,
Kasumi/*    content TEXT,
Kasumi/*    PRIMARY KEY(qn,id)
Kasumi/*);
Kasumi/*
Kasumi/*CREATE TABLE qn_vote (
Kasumi/*    qn          INTEGER REFERENCES qn ON DELETE CASCADE,
Kasumi/*    uid         TEXT,
Kasumi/*    item        INTEGER,
Kasumi/*    vote_time   TIMESTAMP,
Kasumi/*    PRIMARY KEY(qn,uid)
Kasumi/*);
Kasumi/*
Kasumi/*
Kasumi/*岩田香純 Kasumi Iwata
Kasumi/*Kasumi_Iwata @ virtems.com
Kasumi/*
Kasumi/*VIRTEMS Corp.
Kasumi/*http://www.virtems.com


■□■ Yoshiki HORIE Presence,Inc.
□■ mailto:yoshiki @ presence-inc.jp
■□ http://www.presence-inc.jp




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