したがって、これらのテーブルを結合する最善の方法が何であるかはわかりません。JOIN を使用したいのは、FROM で 3 つのテーブルすべてを取得するよりも高速であると考えているためです。だから、テーブルが3つある場合...
Table1
--id
--data
Table2
--id
--data
Table1_Table2
--table1_id
--table2_id
結合テーブルを使用してこのデータを結合するにはどうすればよいですか?
したがって、これらのテーブルを結合する最善の方法が何であるかはわかりません。JOIN を使用したいのは、FROM で 3 つのテーブルすべてを取得するよりも高速であると考えているためです。だから、テーブルが3つある場合...
Table1
--id
--data
Table2
--id
--data
Table1_Table2
--table1_id
--table2_id
結合テーブルを使用してこのデータを結合するにはどうすればよいですか?
句内のすべてのテーブルに言及するFROM
ことも、暗黙の結合です。WHERE
句に述語を追加するのを忘れた場合に関連するテーブルのデカルト積が発生する可能性があるため、使用することはお勧めしません。
ウィキペディアの JOIN 記事と、Jeff Atwood による結合に関するこの非常に素晴らしいブログ投稿もご覧ください。
INNER JOIN
他のバリアントが存在しますが、テーブル間に興味があると思います。これを試して:
SELECT t1.*, t2.*
FROM Table1 t1
INNER JOIN Table1_Table2 tt ON t1.id = tt.table1_id
INNER JOIN Table2 t2 ON t2.id = tt.table2_id;
特別なことは何もないので、選択リストから Table1_Table2 列をスキップしました。
上記のソリューションは機能しますが、レールウェイソリューションを試してみることをお勧めします
参加しているテーブルの主キーのみを含む結合テーブルが必要なため、has_and_belongs_to_manyアソシエーションにループできます。これは、バックグラウンドでのSQLクエリと同じように機能し、優れたソリューションです。結合テーブルにさらに列を追加する場合は、関連付け(リンクされたrailscastでも説明されています)を介してhas_manyを調べることもできます。