2017-09-24 45 views
0

我在DB2中有兩個表。通過加入另一個表,從IBM DB2的最近5天的表中獲取行

table1 
---- 
sidpk     pid 
-------------------------- 
24gsr3    xyz 
67sfr9    xyz 
67sts8    xyz 

table2 
------------------------- 
sid     date 
-------------------------- 
24gsr3    2017-09-24 
67sfr9    2017-09-23 
67sts8    2017-09-15 
. 
. 
and so on 

我正在嘗試獲取所有可用的行,這些行是從今天開始的5天之前從表2中創建的。

在上述情況下,我希望它應該返回是24gsr3,67sfr9

什麼在我的查詢缺少?

請找到它。

SELECT a.sidpk from table1 a 
LEFT JOIN 
table2 b 
ON a.sidpk= b.sid 
WHERE a.pid='xyz' AND b.date>= DATE_SUB(CURDATE(), INTERVAL 5 DAY) AND 
b.date<= CURDATE() 
ORDER BY b.date DESC 
+0

哪些操作系統?你是否得到所有的行或錯誤?嘗試當前日期 - 5天而不是date_sub – MichaelTiefenbacher

+0

@MichaelTiefenbacher,我正在使用Microsoft。但它與操作系統有什麼關係? – Aliy

+0

你爲什麼不使用INNER JOIN?我不認爲你有意使用LEFT JOIN。 –

回答

1

這應該工作

SELECT a.sidpk from table1 a 
    LEFT JOIN table2 b 
    ON a.sidpk= b.sid 
WHERE a.pid='xyz' 
    AND b.date >= current date - 5 days 
    AND b.date <= current date 
ORDER BY b.date DESC 
+0

它的工作原理。謝謝邁克爾 – Aliy

相關問題