兩列

2013-07-09 20 views
0

加入一個表我有這樣兩列

==================== 
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我得到一個corressponding名稱和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而不會創建重複的行。

回答

0

您需要將查詢加入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 |