SQL在连接时获取多个值
嗨,我有一个SQL表,它有两个表,在一个单独的表中引用同一外键两次。。。差不多 销售表SQL在连接时获取多个值,sql,Sql,嗨,我有一个SQL表,它有两个表,在一个单独的表中引用同一外键两次。。。差不多 销售表 idSales idClient1 idClient2 1 1 2 客户表 idClient ClientName 1 Bob 2 Mick 我想将SALES表连接到CLIENT表,并返回如下数据: idSales idClientClientName1 idClientClientName2 1 Bob
idSales idClient1 idClient2
1 1 2
客户表
idClient ClientName
1 Bob
2 Mick
我想将SALES表连接到CLIENT表,并返回如下数据:
idSales idClientClientName1 idClientClientName2
1 Bob Mick
有人能为这方面的SQL提供帮助吗?我的联接中出现不明确的列名错误
谢谢您基本上需要将table
客户机
连接到tableSales
上两次,因为tableSales
上有两列依赖于table客户机
SELECT a.idSales,
b.ClientName ClientName1,
c.ClientName ClientName2
FROM Sales a
INNER JOIN Client b
ON a.idClient1 = b.idClient
INNER JOIN Client c
ON a.idClient2 = c.idClient
要进一步了解加入的更多信息,请访问以下链接:
但是,当其中一列或两列都可为空时,
内部联接将不会提供来自Sales
的所有记录,因为它只会选择在另一个表上至少有一个匹配项的位置。相反,请使用左联接
我可以补充一点,在这种情况下,我使用表别名来提示您在联接表中链接到的实体。例如,如果外键指向一个地址表,并且您有一个work
地址和一个Home
地址,那么我将使用h
和w
的表别名作为两个联接。就你而言,即
Selext s.idSales,
c1.ClientName ClientName1,
c2.ClientName ClientName2
From Sales s
Join Client c1
On c1.idClient = s.idClient1
Join Client c2
On c2.idClient = s.idClient2
对于那些在将来可能会看到这个问题的SQL初学者来说,添加AS单词是很有帮助的,它使问题更加清楚:
SELECT
Sale.idSales,
c1.ClientName AS ClientName1,
c2.ClientName AS ClientName2
FROM
Sales AS Sale
INNER JOIN Client AS c1 ON Sale.idClient1 = c1.idClient
INNER JOIN Client AS c2 ON Sale.idClient2 = c2.idClient
谢谢你的帮助这一切都很有意义