Railsのアクティブレコードまたはsql(sqlite)のいずれかを使用して次のクエリを実行する必要があります。
モデルの説明から始めましょう。
- ユーザー1:nインタレスト
- 関心m:nカテゴリ
- 関心m:n場所
- イベントm:nカテゴリ
- イベントm:n場所
m:nの関係は、interests_categories、events_categoriesなどのパターンを持つ3番目のテーブルを通じて可能になります。
私にはユーザーがいて、それらのユーザーは興味を持っています(カテゴリ->たとえば、スポーツ、音楽、彼が好きな場所)。イベントは場所とカテゴリでタグ付けされます。
ここで、特定のイベントに適合する可能性のあるすべてのユーザーを一覧表示したいと思います。たとえば、ニューヨークで行われ、スポーツでやるべきことがあるイベントがある場合、場所とカテゴリに基づいて、このイベントに興味を持っている可能性のあるユーザーのリストを取得したいと思います。
複数ではなく、単一のデータベースアクセスで実行したいと思います。ActiveRecordまたはSQLではどのように見えますか?(より効率的な方法が好まれます)おそらく、最初にカテゴリ/場所テーブルを結合し、以前に結合したすべてのテーブルに基づいてインタレストを結合してから、インタレストに基づいてすべてのユーザーを選択する必要があります。残念ながら、joinssqlの知識は限られています。または、別のアプローチも利用できますか?