如何在两个表之间创建正确的联接?
Posted
技术标签:
【中文标题】如何在两个表之间创建正确的联接?【英文标题】:How To create correct Join between two tables? 【发布时间】:2015-03-24 10:20:01 【问题描述】:我有两个表,我想从这两个表中获取数据。
客户详情
Id Customer1 Customer2
1 1 2
2 2 1
3 1 3
CustomerName
Id Name
1 a
2 b
3 c
输出应该是
Id Customer1 Customer2
1 a b
2 b a
3 a c
我尝试了内部连接,但它只适用于一列,而不适用于两列。
我如何从 sql 查询中获取这些数据。
请帮我找到这个。
谢谢
【问题讨论】:
您是否尝试过使用ON
子句中的两列和OR
。你试过什么?
【参考方案1】:
使用 2 join
s
select t1.id,t2.name customer1 ,t3.name customer2
from customerdetail t1
join customername t2 on t1.customer1=t2.id
join customername t3 on t1.customer2=t3.id
【讨论】:
【参考方案2】:SELECT Id,
CN1.Name AS Name1,
CN2.Name AS Name2
FROM CustomerDetails CD
JOIN CustomerName AS CN1
ON CD.Customer1 = CN1.ID
JOIN CustomerName AS CN2
ON CD.Customer2 = CN2.ID
我会使用LEFT JOIN
这样做,因为这样会更安全。我不知道你是否总是对 Customer1
和 Customer2
都有值
【讨论】:
【参考方案3】:这应该可行:
SELECT CD.Id,
CN1.Customer1,
CN2.Customer2
FROM CustomerDetails CD
JOIN CustomerName AS CN1
ON CD.Customer1 = CN1.ID
JOIN CustomerName AS CN2
ON CD.Customer2 = CN2.ID
【讨论】:
以上是关于如何在两个表之间创建正确的联接?的主要内容,如果未能解决你的问题,请参考以下文章
带有内部联接和子查询的 Microsoft Access 更新语句