2009-08-13 41 views
1

我有一個(我的能力)相當複雜的查詢,我試圖改進。 我多次使用相同的查詢,只改變了一些參數,所以我希望不需要全部重寫。由極限組,並希望沒有空集

我正在按日期和地點搜索一堆事件。我把這些地方變成

 
Date 1   Date2  Date3 
event1/1   event1/2  event1/3 
event1/2   event2/2  event1/3 
event1/3   event2/3  event3/3 

希望,讓你的輸出和分組的想法的HTML表格。

現在我提交3個查詢,每天一個,我通過日期字段。 什麼,我希望能夠做的是兩件事 1)提供的日期範圍,所以我做只有一個查詢 2)如果結果組是空的(上DATE3所以沒有什麼),響應將返回date4

這是我到目前爲止,但它不實現objective2(空組),它似乎並沒有返回日期範圍內的正確數字,因爲我限制了結果的數量(雖然偶數沒有限制,我沒有得到正確的結果

我已經簡化了查詢了一點,所以它希望更容易理解,但是結構是完全一樣的

 

SELECT event.stuff, user.stuff, eventdate.stuffshows , 
    GROUP_CONCAT(user.groupstuff) AS myStuff 
FROM events 
JOIN users ON events.id = users.bid 
WHERE location= location 
AND event.date 
BETWEEN '2009-08-14' 
AND '2009-08-17' 
GROUP BY event.date 
ORDER BY event.date, user.id DESC 
LIMIT 0 , 5 
) mystuff ON event.bid = similar.id 
AND event.date=similar.date 

所以,我正在尋找本質上就是這種出的(類似於上面我所)

 
date1/event1 
date1/event2 
date1/event3 
date1/event4 
date1/event5 
date2 - empty - nothing returned, go to date3 
date3/event1 
date3 /event2 
date3/event3 
date4/event1 
date4/event2 
date5 - empty - nothing returned, go to date6 
date6/event1 

我希望這是明確的,而且它是可能的。

+0

對不起,我想不出你有什麼要得到你想要的。我覺得你的「事件」表沒有三列,「日期1」,「日期2」和「日期3」。也許給你的表格樣本應該產生你想要的輸出。表中沒有「date5」或「event4」來在輸出中提供這些值。 – Degan 2009-08-13 18:37:10

+0

對不起,'table'是一個輸出表(html),而不是數據庫表。該查詢針對3個表格,事件,用戶和類似信息運行。 – pedalpete 2009-08-13 22:45:19

+0

您是否嘗試過'HAVING'提案? – searlea 2009-08-26 15:30:23

回答

1

您可能能夠同時在子查詢一個不得不這樣做:

GROUP BY event.date 
ORDER BY event.date, user.id DESC 
HAVING event.stuff 
LIMIT 0 , 5
+0

對不起,我以前沒有迴應。 '相信'我相信解決了有空集的問題,但這實際上並不是一個問題,除非我能夠在兩個分組之間進行工作,如果沒有多個查詢,我不相信這是可能的。我最終得到的不是每個日期的5個結果,而是第一個日期的5個結果。爲了用一個查詢來完成這一切,我需要爲每個日期得到5個結果。 – pedalpete 2009-08-26 23:33:06