プロが教える店舗&オフィスのセキュリティ対策術

基本的なことですみません。
環境はSQLServerのクエリアナライザを使用してます。
内容は題名のとおりです。


例えば
table1

fID  fName  fItemCD
1   山田   01
2   木村   03
3   田中   04
4   佐藤   02
5   高橋   03
6   川島   03
7   山下   06


のようなものがあって、以下のSQL文を処理すると

select fItemCD, count(*) as Rslt from table1
where fItemCD in ('04','05','06')
group by fItemCD

結果
fItemCD Rslt
04    1
06    1

が返ってきます


これを
fItemCD Rslt
04    1
05    0
06    1

と結果0件のものも表示したいのですが、いい方法ありますか?

よろしくお願い致します。

A 回答 (1件)

まったく存在しないものを検索するというのは無理な話なので、他にコード管理のテーブルを作ったりunionで作ったりして、その後joinするしかありません。



(1)表定義&データ例
create table table1
(fID smallint,
fName varchar(8),
fItemCD char(2));
insert into table1 values(1,'山田','01');
insert into table1 values(2,'木村','03');
insert into table1 values(3,'田中','04');
insert into table1 values(4,'佐藤','02');
insert into table1 values(5,'高橋','03');
insert into table1 values(6,'川島','03');
insert into table1 values(7,'山下','06');

create table fItemCD_Master
(fItemCD char(2),
fItemName varchar(20));
insert into FItemCD_Master values('01','A');
insert into FItemCD_Master values('02','BB');
insert into FItemCD_Master values('03','CCC');
insert into FItemCD_Master values('04','DDDD');
insert into FItemCD_Master values('05','EEEEE');
insert into FItemCD_Master values('06','FFFFFF');
insert into FItemCD_Master values('07','GGGGGGG');
insert into FItemCD_Master values('08','HHHHHHHH');
insert into FItemCD_Master values('09','IIIIIIIII');
insert into FItemCD_Master values('10','JJJJJJJJJJ');

(2)検索
select M.fItemCD,count(T.fItemCD) as Rslt
from fItemCD_Master as M
left join table1 as T
on M.fItemCD=T.fItemCD
where M.fItemCD in ('04','05','06')
group by M.fItemCD;
    • good
    • 0
この回答へのお礼

遅くなりましたが、
大変参考になりました。
ありがとうございました。
結局ないものをカウントすること自体がナンセンスなのですね。。。

お礼日時:2007/02/01 10:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A