关系数据库通常需要连接表来组合来自不同来源的数据。 虽然外键通常定义这些关系,但情况并非总是如此。 本指南解释了如何使用第三个中间表间接连接表。
想象三个表:Forests
、Species
和 Trees
。 Forests
存储森林名称和位置; Species
列出了树种和木材类型; Trees
详细介绍了每棵树,包括它们的种类和它们栖息的森林。
目标是根据 Forests
和 Species
共享的树将它们连接起来。 但是,Forests
和 Species
之间没有直接的外键链接。 相反,Trees
充当桥梁,包含引用 Forests
和 Species
的外键。
解决方案在于使用Trees
表作为中介链接。 通过Forests
连接Species
和Trees
,我们间接创建了所需的关系。
此 SQL 查询演示了间接连接:
<code class="language-sql">SELECT Forests.Fo_name, Species.Sp_name, Species.Sp_woodtype FROM Forests INNER JOIN Trees ON Forests.Fo_name = Trees.Tr_forest INNER JOIN Species ON Trees.Tr_species = Species.Sp_name WHERE Forests.Fo_loc = 'ARTIC' ORDER BY Forests.Fo_name, Species.Sp_name;</code>
此查询的步骤:
INNER JOIN
使用匹配的森林名称连接 Forests
和 Trees
。INNER JOIN
通过匹配物种名称链接Trees
和Species
。WHERE
将结果过滤到“北极”地区的森林。ORDER BY
对输出进行排序以提高可读性。此方法通过使用共享表作为桥梁,有效地连接没有直接外键连接的表。 识别链接表的公共列对于建立这种间接关系至关重要,即使没有传统的外键约束,也可以实现复杂的联接操作。
以上是如何使用中间表连接没有外键的表?的详细内容。更多信息请关注PHP中文网其他相关文章!