0

したがって、これらのテーブルを結合する最善の方法が何であるかはわかりません。JOIN を使用したいのは、FROM で 3 つのテーブルすべてを取得するよりも高速であると考えているためです。だから、テーブルが3つある場合...

Table1
--id
--data

Table2
--id
--data

Table1_Table2
--table1_id
--table2_id

結合テーブルを使用してこのデータを結合するにはどうすればよいですか?

4

2 に答える 2

2

句内のすべてのテーブルに言及する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 列をスキップしました。

于 2012-05-23T19:19:04.820 に答える
0

上記のソリューションは機能しますが、レールウェイソリューションを試してみることをお勧めします

参加しているテーブルの主キーのみを含む結合テーブルが必要なため、has_and_belongs_to_manyアソシエーションにループできます。これは、バックグラウンドでのSQLクエリと同じように機能し、優れたソリューションです。結合テーブルにさらに列を追加する場合は、関連付け(リンクされたrailscastでも説明されています)を介してhas_manyを調べることもできます。

于 2012-05-23T19:25:45.830 に答える