この人頭いいなと思ったエピソード

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.番号
といった形で作ってみました。
エイリアスをつけてしまった時点でエラーが出ているので、
どうにもしようがありません。
申し訳ないのですが、ご教授のほどよろしくお願いいたします。

A 回答 (1件)

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



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.番号
    • good
    • 0

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

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

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


おすすめ情報