0

所以,我不确定为这些表进行连接的最佳方法是什么。我想使用 JOIN,因为我相信它比将所有三个表都放在 FROM 上要快。所以,如果我有三张桌子......

Table1
--id
--data

Table2
--id
--data

Table1_Table2
--table1_id
--table2_id

如何使用连接表对这些数据进行连接?

4

2 回答 2

2

在子句中提及所有表FROM也是一种连接,隐式连接。不建议使用它,因为它可能会导致所涉及的表的笛卡尔积,以防您忘记在WHERE子句中添加谓词。

查看Wikipedia 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

虽然上述解决方案有效,但您可能想尝试一下 rails-way 解决方案

由于您需要一个仅包含参与表的主键的连接表,因此您可以循环进入has_and_belongs_to_many关联。它的作用与幕后的 SQL 查询相同,是一种更简洁的解决方案。如果您想向连接表添加更多列,您还可以通过关联(也在链接的 railscasts 中解释)查看has_many。

于 2012-05-23T19:25:45.830 回答