中間テーブル同士を比較して取得するSQL文をかきたいです。(IN句かEXISTを用いるのかとは思いますが)
ceremonies_categoriesとusers_category(どちらとも中間テーブル)のcategory_idを見比べて、
同じカテゴリを持っているceremony(式典)を取得するSQLをかきたいです。
・ceremonies_categories(式典が持つカテゴリ)
・users_category(利用ユーザーが選択するカテゴリ)
【目的】
利用ユーザーが興味を持つカテゴリを提示するためのSQL
【関係し得るテーブル】
・ceremony
・ceremonies_categories
・user
・category
・users_category
【考案例】
SELECT * from ceremonies WHERE EXISTS (SELECT * FROM users_categories WHERE users_categories.user_id = 1)
SELECT * from ceremonies WHERE EXISTS (SELECT * FROM users_categories WHERE users_categories.category_id in ceremonies_categories.category_id)
こういうSQLを考えましたが、よくわからなかったため質問しました。
(1つめのSQL文はエラーなくいきましたが、これが正しいのかどうかよくわからず)
(2つめのSQL文はEXISTの中で、IN句も使っており、アンチパターンな気がしまして。かといって解決策が思いつかず)
宜しくお願いします。