MySQLでVIEW

MySQLってVIEWでサブクエリが使えないみたいなんですよ

例えば


select * from t1 tmp1,
(
select c3,max(c4) as 'c4' from t2 group by c3 having count(c3) >= 2
) tmp2
where tmp1.c1=tmp2.c3

みたいなSQLがあったとしてこれをVIEWに出来ない

パーサでエラーになっちゃいます

でどうするか

joinでいけるかもですけど

長ったらしくなるかもだったので


select c3,max(c4) as 'c4' from t2 group by c3 having count(c3) >= 2

の部分を


create view v_1 as select c3,max(c4) as 'c4' from t2 group by c3 having count(c3) >= 2

ってしてから


create view v_2 as select * from t1 tmp1,v_1 tmp2 where tmp1.c1=tmp2.c3

ってすると作成が可能なんですよ!!

1000行近いクエリの場合、可読性、メンテナンス性などを考慮しすると

こっちのほうが圧倒的に見やすい!!

もっといろいろ出来そうです