2011-05-04 51 views
1

我正在處理一個我無法解決的問題。 比方說,我得到的結果與一個簡單的MySQL Select查詢:如何在MySQL中獲取時間範圍選擇查詢

SELECT date_from.rights, date_to.rights FROM rights 

rights保持描述用戶,他們需要訪問系統的權限記錄。

權限受時間值限制,顯然是FROM和TO。如果date_fromdate_to爲NULL,則權限不受限制(按時間順序)。

表權限包含以下數據:

date_from。 。 。 。 。 。 。 。 。 date_to

2011-05-20。 。 。 。 。 。 。 。 。 2011-08-20
2011-06-20。 。 。 。 。 。 。 。 。 NULL
2011-03-20。 。 。 。 。 。 。 。 。 2011-04-20
NULL ..。 。 。 。 。 。 。 。 。 。 。 。 2011-01-20

我真的需要得到一個SELECT查詢:

date_from。 。 。 。 。 。 。 。 。 date_to

2011-05-20。 。 。 。 。 。 。 。 。 NULL
2011-03-20。 。 。 。 。 。 。 。 。 2011-04-20
NULL ..。 。 。 。 。 。 。 。 。 。 。 。 2011-01-20

希望你明白我的意思了。我只需要GROUP結果,以獲得儘可能廣泛的時間限制權限,在每個日期值相交的地方;)

我認爲,GROUP BY子句應該做這項工作,但我無法找到正確的公式。如果可能的話,我也想避免程序。

+1

您的2個「表」或您需要SQL查詢執行的示例對您的問題描述不夠。請回答這些問題:1.什麼是你的表格模式? (表格中有哪些字段)以及2.給出一些示例數據和3.結果集應該是什麼樣子? – 2011-05-04 23:09:46

回答

0

我認爲這是你在找什麼:

select * 
from rights 
where (date_from is null or date_from <= now()) 
and (date_to is null or date_to >= now()) 

好運。

+0

艾倫,謝謝你的回覆,不幸的是,這不是我所需要的。這太容易了:]並根據當前日期給我一個結果。但我只需要將我已經通過SELECT查詢獲得的結果進行分組。我已經有了一個SELECT查詢,並給出了某些結果(date_from&date_to),我只需要找到這些結果的交集,並完成我之前的文章中描述的工作。 ;) – Ondrej 2011-05-05 04:54:42