2017-09-26 40 views
0

我有3個數據庫,我需要提取數據(我們稱之爲DB1,DB2和DB3)。 從DB1我選擇返回像這樣的查詢:「有條件」加入到不同的表

ORDER  DESC  TOTAL ORGANIZATION 
============================================= 
262  Order1 5129  116 
629  Order2 123  138 
915  Order3 95   138 
159  Order4 1932  116 

,然後從DB2和DB3我選擇該信息(包括表是相同的,但與diferent組織diferente數據)

DB2 (ORG 116):

ORDER  TYPE 
================== 
262  2 
159  5 
856  3 
629  2 

DB3(ORG 138):

ORDER  TYPE 
================== 
629  1 
915  4 
012  1 
262  5 

正如你所看到的,兩個組織都可以讓它們具有相同的訂單號,但是不同類型。

如何將DB1與DB2和/或DB3一起提取TYPE列,但是根據DB1組織列查找不同的DB?

結果會是這樣:

ORDER  DESC  TOTAL ORGANIZATION  TYPE 
=========================================================== 
262  Order1 5129   116    2 
629  Order2 123   138    1 
915  Order3 95   138    4 
159  Order4 1932   116    5 

正如你所看到的,對於訂單262我得到了2型從DB2(而不是從DB3因爲ORG是116)和ORDER 629我從拿到1型DB3(不是來自DB2,因爲ORG是138)

我的簡單查詢會是這樣的(我使用WITH ... AS,因爲querys非常長,每個來自不同的服務器,所以這樣一切似乎更多有組織):

With EAM as (
Select Order, Desc, Total, Organization 
from Table1 
), 
AP116 as (
select order, type 
from table2 
), 
AP138 as (
select order, type 
from table3 
) 
select * 
from EAM inner join AP116 on EAM.order = AP116.order 

此查詢正常工作,但將所有訂單鏈接到AP116。我需要使用一個CASE或其他東西來讓我選擇AP116或AP138,這取決於最後一行的ORG。

+0

'LEFT JOIN'的所有表,只是選擇你需要用'CASE'語句中的值? – DavidG

回答

2

對於離散集不同的數據庫,我建議寫這爲工會:

Select Order, Desc, Total, Organization, Table2.Type 
from Table1 
join Table2 on... 
where Organization = 116 

union 

Select Order, Desc, Total, Organization, Table3.Type 
from Table1 
join Table3 on... 
where Organization = 138