サブクエリ内で親クエリのテーブルとの外部結合をする方法について。
具体的には↓みたいな感じ。(このコードはエラーになる)
select * from videos parent_video where exists ( select * from parent_video left join people on video.people_id = people.id )
サブクエリ内でparent_videoと外部結合したいんだけど、このコードのままだと「parent_videoなんてテーブルはないですよ」と言われてしまう。
かといって、videosと書くとparent_videoとは別のテーブルだと認識されてしまうし。。
とりあえず↓のようにサブクエリ内で別のテーブルを宣言して親クエリのテーブルと等価結合する方法で解決した。
select * from videos parent_video where exists ( select * from videos child_video left join people on video.people_id = people.id where parent_video.id = child_video.id )
可読性やパフォーマンスが心配だなあ。もっと素直な方法ないかな。。