Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 server 2005 连接两列上的表_Sql Server 2005_Join - Fatal编程技术网

Sql server 2005 连接两列上的表

Sql server 2005 连接两列上的表,sql-server-2005,join,Sql Server 2005,Join,我有一张这样的桌子 ==================== companyid, companyname 2 com A 3 com B 4 com C 5 com D 6 com E 我运行了一个查询,结果数据集如下所示 ==================================== name | InvoiceTo_ID | ProviderID ------------

我有一张这样的桌子

====================
companyid, companyname
  2         com A
  3         com B
  4         com C
  5         com D
  6         com E
我运行了一个查询,结果数据集如下所示

====================================
name |  InvoiceTo_ID |   ProviderID 
------------------------------------
p1          2               3
p2          2               4
p3          6               3
p4          5               6
现在我想要的是将我的数据集与上面的
companys
表连接起来,这样对于
InvoiceTo\u ID
我可以得到一个相应的名称,对于
ProviderID
我可以得到一个相应的名称。这是最终结果

======================================================================
name |  InvoiceTo_ID |   ProviderID | InvoiceTo_Name |  ProviderName 
----------------------------------------------------------------------
p1          2               3               com A             com B
p2          2               4               com A             com C
p3          6               3               com E             com B
p4          5               6               com D             com E

如何构造联接,使其在不创建重复行的情况下同时联接invoiceID和ProviderID。

您需要将查询联接到
companys
表两次才能获得最终结果。一个联接将获得
InvoiceTo\u Name
,第二个联接将获得
ProviderName

select q.name,
  q.InvoiceTo_ID,
  q.ProviderID,
  c1.companyname InvoiceTo_Name,
  c2.companyname ProviderName
from yourquery q
left join companies c1
  on q.InvoiceTo_ID = c1.companyid
left join companies c2
  on q.ProviderID = c2.companyid;
看。这就产生了一个结果:

| NAME | INVOICETO_ID | PROVIDERID | INVOICETO_NAME | PROVIDERNAME |
--------------------------------------------------------------------
|   p1 |            2 |          3 |          com A |        com B |
|   p2 |            2 |          4 |          com A |        com C |
|   p3 |            6 |          3 |          com E |        com B |
|   p4 |            5 |          6 |          com D |        com E |