首页 文章

分组限制,希望没有空集

提问于
浏览
1

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

我按日期和地点搜索一堆事件 . 我把这些放到一个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)如果结果组为空(所以没有日期3),响应将返回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 回答

  • 1

    您可以通过子查询中的HAVING执行此操作:

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

相关问题