こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access 2000 サブクエリとJOIN

Access2000でSQLを発行したのですが、
エラーが出てしまいます。

テーブル(仮にtest1、test2)があるとして
test1
-------------------------
主キー | 番号|項目
   1|  1|りんご
   2|  2|ぶどう
   3|  3|みかん
   4|  4|いちご

test2
-----------------------------
一つ目|二つ目|
1| 2|
4| 1|
・・・略
test2には2つのフィールドがあり、1,2,3,4を既定値として
入れるようにしています。

やりたいとこは、test2をグループ化し「一つ目」と「二つ目」
の規定値の個数(1、2、3、4)それぞれのカウントを求めたいのです。

一つのフィールドの場合は、
select *
from test1
join test2 test1.番号=test2.一つ目
group by test1.番号
で求められたのですが、二つのフィールドをグループ化した際、
一つ目のフィールドと同じ個数が二つ目のフィールドにコピーされてしまうのです。

ですので、FROM句でサブクエリを結合しその中で、
group化したものを、いくつかのサブクエリと結合し
てみたのですが、うまくいきませんでした。

select cnt1.一つ目,cnt2.二つ目
from
(select * from test1 left join test2 on test1.番号=test2.一つ目group by test1.番号) as cnt1
left join
(select * from test1 left join test2 on test1.番号=test2.二つ目group by test1.番号) as cnt2
on cnt1.番号=cnt2.番号
といった形で作ってみました。
エイリアスをつけてしまった時点でエラーが出ているので、
どうにもしようがありません。
申し訳ないのですが、ご教授のほどよろしくお願いいたします。

投稿日時 - 2009-01-27 00:16:46

QNo.4664216

すぐに回答ほしいです

質問者が選んだベストアンサー

読み切れていないかもしれませんが、こういうことがやりたいんですかね。。

SELECT t1.番号,Nz(cnt1.件数,0),Nz(cnt2.件数,0)
FROM (test1 t1
LEFT JOIN (SELECT 一つ目,COUNT(一つ目) AS 件数 FROM test2 GROUP BY 一つ目) cnt1 ON cnt1.一つ目=t1.番号)
LEFT JOIN (SELECT 二つ目,COUNT(二つ目) AS 件数 FROM test2 GROUP BY 二つ目) cnt2 ON cnt2.二つ目=t1.番号

投稿日時 - 2009-01-27 00:48:35

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問