我一直在尝试运行SQL查询,但却没有多少运气。无论我做什么,我似乎无法按照我需要的方式运行它。我可以让表格加入并获取名称,但我无法获得我正在寻找的查询输出。
我有两个表,一个表有3列,可以输入第一,第二和第三门技术。第二个表格列出了我们使用的门户技术,技术人员的ID是主要关键。
我正在寻找的是一个SQL语句,它将从门表中获取密钥。示例将是Gate Table ID 2将获得2,2,1,然后与tech table连接并返回技术名称而不是密钥。
如果我执行以下操作,我可以工作,但无法获得3个单独的数据列。
<div class="container">
<div id="1"></div>
<div id="div2">Content</div>
<div id="3">Content</div>
</div>
<div class="container">
<div id="1">1</div>
<div id="div2">Content</div>
<div id="3">Content</div>
</div>
-
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
答案 0 :(得分:2)
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
答案 1 :(得分:1)
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子句。