關聯式資料庫通常需要連接表來組合來自不同來源的資料。 雖然外鍵通常定義這些關係,但情況並非總是如此。 本指南說明如何使用第三個中間表間接連接表。
想像三個表: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中文網其他相關文章!