2

我有 2 张桌子:一张有活动,一张有活动时间表:

events(id,name,description)

schedules(id,eventid,date,time) // date is a DATE, time is a TIME

在单个 mysql 查询中获取所有事件的最有效方法是什么,按时间表中的下一个日期排序?

(为了澄清,“下一个日期”是指第一个日期>现在)

4

2 回答 2

0

即使没有安排下一个日期,如果您需要所有事件,请左加入。如果您需要 NEXT DATE 事件,请使用 INNER JOIN

select e.id,e.name,e.description, sc.nextDate
from events
left join 
  (
   select s.eventid,
       min(TIMESTAMP(s.date,s.time)) nextDate
   from schedules s
        where TIMESTAMP(s.date,s.time)>NOW() 
   group by s.eventid
  ) sc on e.id=sc.eventid
order by sc.nextDate 
于 2013-10-17T11:58:47.717 回答
0
select 
1,e.name,e.description,s.date,s.time
from
events e
inner join schedules s on e.id = s.eventid
where TIMESTAMP(s.date,s.time) > CURRENT_TIMESTAMP()
union
select 
2,e.name,e.description,s.date,s.time
from
events e
inner join schedules s on e.id = s.eventid
where TIMESTAMP(s.date,s.time) <= CURRENT_TIMESTAMP()
order by 1, TIMESTAMP(s.date,s.time) asc
于 2013-10-17T11:36:30.327 回答