2012-05-27 22 views
0

我有天,版本和活動表。選擇活動日期從1天,如果活動= 0,什麼也不做

在表中我有相同的日子,其中活躍= 1和活躍= 0 我需要從數據庫中獲得所有這些天,其中active = 1和version_id是最大。 爲此我寫了下面的查詢:

SELECT 'MAX(version_id)',DAY, active FROM `day` group by day, active 

但28天和29是重複的,所以當我用「和Active = 0」的話,就說明我天28活躍= 1(並降低MAX(VERSION_ID ),但是那天不應該被看作

查詢結果:http://screenshooter.net/0562655/27_05_2012__09_02_56

所以: 「顯示我的所有天凡VERSION_ID IS MAX和日時,如果積極= 0,不顯示的早期版本」。

+0

你可以嘗試'選擇 'MAX(VERSION_ID)',日從天active = 1的GROUP BY一天;' – anubhava

+0

@anubhava,http://screenshooter.net/0562655/27_05_2012__09_29_13 它給我28最大16562,但MAX是16563 – breq

+0

16563是活動= 0而不是活動= 1。你寫了'SHOW ME ALL DAYS WHERE VERSION_ID MAX MAX AND DAY IS ACTIVE'這是否意味着檢索max(version_id)爲active = 1。如果不是,你可以在你的問題中列出你的預期數據。 – anubhava

回答

0

這是你如何可以嵌套查詢做到這一點:

SELECT * FROM `day` 
WHERE `active` = 1 AND version_id = (
    SELECT MAX(version_id) FROM `day` 
) 
+0

好吧,但它只給我一天,我需要得到所有的日子 – breq

+1

也許因爲只有一天符合標準? –

+0

不是,每天都是max(version_id),你的查詢顯示max(version_id)對於所有表不是全部天數 – breq

0

試試這個 -

SELECT * 
FROM day 
WHERE version_id IN (SELECT MAX(d.version_id) 
        FROM day d 
        WHERE active = 1 
        GROUP BY d.day) 
OR active = 0 
+0

#1242 - 子查詢返回多於1行 – breq

+0

更正了答案。你現在可以嘗試嗎? – JHS

+0

你的查詢返回所有的日子,我需要那些max(version_id)和active = 0 請記住,在表中是另一列「employees」,所以確切的查詢應該是: 「Display days where day =最大(日)和活躍= 0,按員工分組,日期「 – breq