2015-12-23 51 views
-1

誰能幫我在這需要加入和工會

query:: 
select Ext_Acct,date_opened,last_date_flown,Sender from 
table1 T1,table2 T2 
where T1.Ext_acct(+)=T2.Ext_acct 
union 
select Ext_Acct,date_opened,last_date_flown,Sender from 
table1 T1,table2 T3 
where T1.Ext_acct(+)=T3.Ext_acct 

數據我有::

表1

Ext_Acct date opened last date flown 
AAA dd/mm/yyyy dd/mm/yyyy 
BBB dd/mm/yyyy dd/mm/yyyy 
CCC dd/mm/yyyy dd/mm/yyyy 

消除重複數據刪除表2

Ext_Acct Sender 
AAA XXX 

表3

Ext_Acct Sender 
BBB YYY 
CCC XXX 

預期結果::

Ext Acct date opened last date flown Sender 
AAA dd/mm/yyyy dd/mm/yyy XXX 
BBB dd/mm/yyyy dd/mm/yyy YYY 
CCC dd/mm/yyyy dd/mm/yyy XXX 

結果得到::

Ext Acct date opened last date flown Sender 
AAA dd/mm/yyyy dd/mm/yyy XXX 
AAA   
BBB dd/mm/yyyy dd/mm/yyy YYY 
BBB   
CCC dd/mm/yyyy dd/mm/yyy XXX 
CCC 

回答

1

嘗試在T2和T3

select t1.Ext_Acct, 
     t1.date_opened, 
     t1.last_date_flown, 
     t2.Sender 
from 
     table1 T1, 
     (select Ext_Acct, Sender from Table2 
     union 
     select Ext_Acct, Sender from Table3) T2 
where T1.Ext_Acct=T2.Ext_Acct(+) 
+0

它的作品很棒.......非常感謝 –

0

工會您可以嘗試DISTINCT

select DISTINCT T1.Ext_Acct,T1.date_opened,T1.last_date_flown,T2.Sender from 
table1 T1,table2 T2 
where T1.Ext_acct(+)=T2.Ext_acct 
union 
select T1.Ext_Acct,T1.date_opened,T1.last_date_flown,T3.Sender from 
table1 T1,table2 T3 
where T1.Ext_acct(+)=T3.Ext_acct 

但我建議不要使用IMPLICIT JOINS,並開始使用EXPLICIT JOINS,因爲當存在大量數據時它更準確。

SELECT DISTINCT T1.Ext_Acct,T1.date_opened,T1.last_date_flown,T2.Sender 
FROM TABLE1 T1 RIGHT JOIN TABLE2 T2 
ON T1.Ext_acct = T2.Ext_acct 
UNION 
SELECT T1.Ext_Acct,T1.date_opened,T1.last_date_flown,T3.Sender 
FROM TABLE1 T1 RIGHT JOIN TABLE3 T3 
ON T1.Ext_acct = T3.Ext_acct