Select
通過外鍵從多個表中選擇屬性
如果這個問題已經得到回答,我們深表歉意。自己找不到答案。
我正在嘗試制定 SQL 以從另一個表中引用的一個表中提取數據。由於看得太久,我的解釋可能很糟糕,所以請參閱下面的表格:
本質上,我試圖從表 2 中全選,但 table2.att_1 和 table2.att_2 是 table1.id 的外鍵。我想要實現的是提取以下內容:
Table2.ID 的值
Table1.Att_1 其中 Table2.Att_1 = Table1.ID
Table1.Att_1 其中 Table2.Att_2 = Table1.ID
Table2.Att_3 的值
最終的 SQL 將在 PHP 腳本中使用,因此如果無法在單行 SQL 中執行此操作,我可以將請求一一拆分。只是在尋找一些好的舊 CPD。
本質上,我試圖從表 2 中選擇所有內容,…
所以我們從
Table2
作為查詢的基礎開始:FROM Table2
…但 table2.att_1 和 table2.att_2 是 table1.id 的外鍵。
我們可能需要兩個(外部)連接到同一個表(
Table1
),每個外鍵一個:FROM Table2 LEFT JOIN Table1 .. LEFT JOIN Table1 ..
我想要實現的是提取以下內容: Table2.ID 的值
SELECT Table2.ID
Table1.Att_1 其中 Table2.Att_1 = Table1.ID
Table1.Att_1 其中 Table2.Att_2 = Table1.ID
對,那些驗證我們想要 2 個左連接和
ON
條件:SELECT Table1.Att_1 FROM Table2 LEFT JOIN Table1 ON Table2.Att_1 = Table1.ID
和
SELECT Table1.Att_1 FROM Table2 LEFT JOIN Table1 ON Table2.Att_2 = Table1.ID
糟糕,我們在合併兩個聯接時遇到了問題。我們需要給這些表起別名,因為我們有一個表出現了兩次,但這是一個很好的做法:
FROM Table2 AS t2 LEFT JOIN Table1 AS t1a ON t2.Att_1 = t1a.ID LEFT JOIN Table1 AS t1b ON t2.Att_2 = t1b.ID
Table2.Att_3 的值
SELECT t2.Att_3
整個查詢變為(在添加了一些列別名之後):
SELECT t2 . ID AS ID, t1a . Att_1 AS Att_1_a, t1b . Att_1 AS Att_1_b, t2 . Att_3 AS Att_3 FROM Table2 AS t2 LEFT JOIN Table1 AS t1a ON t2.Att_1 = t1a.ID LEFT JOIN Table1 AS t1b ON t2.Att_2 = t1b.ID ;