2013-11-26 74 views
0

我有以下的情況(簡體):DB2連接困難

2雙溫表

  • basicdata(ID,btmp_tsd,姓名,女士prename)
  • extendeddata(ID,btmp_tsd,basicid,代號,codevalue)

在擴展數據中,對於一個基本數據可以有多個條目,每個條目名稱和值都不同。

我必須創建一個SQL來選擇自指定時間以來已更改的所有行。對於basicdata表,這是比較簡單的:

SELECT ID, BTMP_TSD, NAME, PRENAME 
FROM BASICDATA BD 
WHERE BTMP_TSD = 
       (SELECT MAX(BTMP_TSD) 
        FROM BASICDATA BD2 
       WHERE BD2.ID    = BD.PRTNR_ID 
        AND BD2.BTMP_TSD  > :MINTSD 
        AND BD2.BTMP_TSD  <= :MAXTSD 
       ) 
ORDER BY ID 
WITH UR 

現在我需要加入第二臺獲得了代號爲「測試」的codevalue。問題是,它可能不存在,在這種情況下,無論如何應該收集該行。但是如果有一行但不在時間範圍內,我不應該得到結果。

我希望我能解釋我的問題。加入是的事情,我還沒有看到一個低谷......

編輯: 好這裏是一個樣本

basicdata: 
id,btmp_tsd,name,prename 
1,2013-05-25,test,user 
2,2013-06-26,user,two 
3,2013-06-26,peter,hans 
1,2013-06-20,test,us3r 
2,2013-10-30,us3r,two 

extendeddata: 
id,btmp_tsd,basicid,codename,codevalue 
1,2013-05-25,1,superadmin,1 
2,2013-06-26,3,admin,1 
3,2013-11-25,1,superadmin,0 

好了,現在有這些條目,我希望所有的用戶ID的這不得不因爲任何變化2013年10月1日我應該得到

用戶1(因爲extendeddata超級管理員有變化)

用戶2(有一個名字昌e和我想他甚至強硬,他對extendeddata表中沒有條目)

沒有用戶3(他有兩個表的條​​目,但它不是在指定的範圍內)

+0

您可以添加一些示例數據和預期結果嗎? –

+0

我添加了一些示例數據和我期望的內容 – Xavjer

回答

0

下面的查詢應該做些什麼你要。

select * 
from basicdata b left outer join extendeddata e on b.id=e.basicid 
where b.btmp_tsd >= '2013-10-01' 
    or e.btmp_tsd >= '2013-10-01' 

免責聲明:我沒有測試sql。所以語法可能不是100%完美。

+0

問題是,由於表是雙時間的,這不會像這樣簡單 – Xavjer