Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL在连接时获取多个值_Sql - Fatal编程技术网

SQL在连接时获取多个值

SQL在连接时获取多个值,sql,Sql,嗨,我有一个SQL表,它有两个表,在一个单独的表中引用同一外键两次。。。差不多 销售表 idSales idClient1 idClient2 1 1 2 客户表 idClient ClientName 1 Bob 2 Mick 我想将SALES表连接到CLIENT表,并返回如下数据: idSales idClientClientName1 idClientClientName2 1 Bob

嗨,我有一个SQL表,它有两个表,在一个单独的表中引用同一外键两次。。。差不多

销售表

idSales idClient1 idClient2
1       1         2
客户表

idClient ClientName
1        Bob
2        Mick
我想将SALES表连接到CLIENT表,并返回如下数据:

idSales idClientClientName1 idClientClientName2
1       Bob                 Mick
有人能为这方面的SQL提供帮助吗?我的联接中出现不明确的列名错误


谢谢

您基本上需要将table
客户机
连接到table
Sales
上两次,因为table
Sales
上有两列依赖于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

谢谢你的帮助这一切都很有意义