2013-07-09 3 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에 해당하는 이름이 표시되고 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 |