複数テーブルの集計その2
お世話になります。
先日テーブルの集計について教えていただき、下記集計結果を取得することができたのですが、
新たに自由形50~平泳ぎ50までの合計を追加したいのです。(一人で4種目参加する場合は4と数える)
テーブル1
AreaID AreaName
---------------------
1 北海道
2 東北
テーブル3
ID AreaID Name Item1 Item2 Item3 Item4
---------------------------------------------------------
1 2 鈴木 2 1 4 3
2 1 田中 1 2 null null
3 2 伊藤 3 null 2 4
「集計結果」
参加人数 自由形50 自由形100 背泳ぎ50 平泳ぎ50 追加部分
---------------------------------------------------------------
北海道 1 1 1 0 0 2
東北 2 1 2 2 2 7
$sql="select AreaName,
count(distinct ID) 参加人数,
count(case when Item=1 then 1 else null end) as 自由形50,
・・・略
from t1 as x
left join
(select ID,AreaID,1 as Item from t3 where Item1=1 or Item2=1 or Item3=1 or Item4=1
union all
select ID,AreaID,2 as Item from t3 where Item1=2 or Item2=2 or Item3=2 or Item4=2
) as y on x.AreaID=y.AreaID
group by AreaName order by x.AreaID
というようにおしえていただきました。
null以外を取得するSQLをカウントとselectに追加すればいいのかと思い試したのですが期待した値を取得できません。
count(case when Item=AAA then 1 else null end) as abc,と
union all
select ID,AreaID,AAA as Item from テーブル3 where ItemID1<>'' or ItemID2<>'' or ItemID3<>'' or ItemID4<>'' or (ItemID1<>'' and ItemID2<>'') ・・・
バージョンはMySQL4.1.18です。
よろしくお願い致します。
お礼
ありがとうございます。理由は分かりませんが「クエリが複雑すぎます」というエラーが出てしまいます。どうすればいいでしょうか。
補足
色々やったらうまくできました。ありがとうございます。