【问题标题】:joining a table on two columns在两列上加入表格
【发布时间】:2013-07-07 06:56:39
【问题描述】:

我有一张这样的公司表

====================
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

现在我想要将我的数据集与上面的companies 表连接起来,以便InvoiceTo_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 上联接而不创建重复行。

【问题讨论】:

    标签: sql-server-2005 join


    【解决方案1】:

    您需要将查询加入companies 表两次才能获得最终结果。第一次加入将获得InvoiceTo_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;
    

    SQL Fiddle with Demo。这给出了一个结果:

    | 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 |
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2011-07-26
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多