簡體   English   中英

SQL一個表上的多個列從另一表連接到列

[英]SQL Multiple columns on one table joined column from other table

我一直在嘗試運行SQL查詢,但是運氣不高。 不管我做什么,我似乎都無法使其按我需要的方式運行。 我能夠使表聯接並獲得名稱,但是我無法獲得所需的查詢輸出。

我有兩個表,一個表有3列,分別用於輸入第一,第二和第三門技術。 第二張表列出了我們使用的閘門技術人員列表,技術人員的ID是主鍵。

我正在尋找的是一條將從門表中獲取密鑰的SQL語句。 例如,門表ID 2將得到2、2、1,然后與技術表連接並返回技術名稱而不是密鑰。

如果執行以下操作,我可以工作,但無法獲得3個單獨的數據列。

SELECT TName
FROM TechTable
INNER JOIN GateTable
ON GateTabe.Gate1=TechTable.ID
WHERE ID = 3

-

  GateTable   
     ID Gate1 Gate2 Gate3
        1    1    2      3
        2    2    2      1
        3    4    2      1

-

TechTable
 ID TName
 1  Tech1
 2  Tech2
 3  Tech3

4技術4

Query Result
 ID Gate1 Gate2 Gate3
 1  Tech1 Tech2 Tech3
 2  Tech2 Tech2 Tech1
 3  Tech4 Tech2 Tech1

三次join techTable,每個不同的門一次。

SELECT g.id,t1.TName as gate1,t2.TName as gate2,t3.TName as gate3
FROM GateTable g
INNER JOIN TechTable t1 ON g.Gate1=t1.ID
INNER JOIN TechTable t2 ON g.Gate2=t2.ID
INNER JOIN TechTable t3 ON g.Gate3=t3.ID 
SELECT gt.ID, t1.TName as Gate1, t2.TName as Gate2, t3.TName as Gate3
FROM GateTable gt
LEFT JOIN TechTable t1
ON gt.Gate1=t1.ID
LEFT JOIN TechTable t2
ON gt.Gate2=t2.ID
LEFT JOIN TechTable t3
ON gt.Gate3=t3.ID

您也可以使用INNER JOIN,但是它僅提供映射列。 在您的示例中,您指定Gate1值為4,但TechTable中沒有該值。 在這種情況下,INNER JOIN會跳過該值。 但是LEFT JOIN會為您提供映射的值,而對於不可用的映射將為null。 如果需要特定的GateID,則可以使用where子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM