分组限制,希望没有空集

时间:2009-08-13 16:46:50

标签: sql mysql

我有一个(我的能力)相当复杂的查询,我正在努力改进。 我多次使用相同的查询,只更改一些参数,所以我希望不需要完全重写。

我正在按日期和地点搜索一堆事件。我将这些放入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

我希望这很清楚,而且这是可能的。

1 个答案:

答案 0 :(得分:1)

您可以在子查询中使用HAVING执行此操作:

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