sql joinの条件とwhereの条件の違いについて
ケース1
left join t2 on t2.t1_id = t1.id AND t2.status = 'ERROR'
ケース2
left join t2 on t2.t1_id = t1.id 中略 where t2.status = 'ERROR'
ケース1の場合は結合前の条件となるため、ERRORでないt2のデータもNULLとしてデータを取得する。
ケース2の場合は結合後の条件となるため、ERRORでないt2のデータはおろかt1のデータも取得できなくなってしまう。(inner joinならどちらも一緒)
要はleft joinしているテーブルに対する条件はwhereには記述しない方がよいってことか。
俺は何年sqlをやっているんだろう。やっぱり死んだ方がいいな。