我有一个(我的能力)相当复杂的查询,我正在努力改进。 我多次使用相同的查询,只更改一些参数,所以我希望不需要完全重写。
我正在按日期和地点搜索一堆事件。我将这些放入html表中
Date 1 Date2 Date3 event1/1 event1/2 event1/3 event1/2 event2/2 event1/3 event1/3 event2/3 event3/3
希望这可以让您了解输出和分组。
现在我提交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)
您可以在子查询中使用HAVING执行此操作:
GROUP BY event.date
ORDER BY event.date, user.id DESC
HAVING event.stuff
LIMIT 0 , 5