1

私が見たすべての例はこの問題を解決するのに役立ちませんが、これは一般的なタスクであると確信しています。

私は2つのテーブルを持っています:

  1. events
  2. schedulesイベントへの外部キーを使用します。とschedule_datetime_fromschedule_datetime_until

Q.すべてのイベントを選択する場合、今日の日付に基づいて最初に最も近いスケジュールを取得/参加するにはどうすればよいですか?たとえば、最も関連性の高いスケジュールのみを返します。

注:各イベントには複数のスケジュールがある場合があります。スケジュールも過去のものである可能性があります。

たとえばe.schedule_datetime_from >= NOW() OR schedule_datetime_until > NOW()、将来のスケジュールのみを返しますが、過去のスケジュールも返すにはどうすればよいですか。または、これを実現するためにORDER BY + LIMIT 1を使用する必要がありますか?

4

3 に答える 3

2
select e.*, s.*
from 
    events e
    inner join 
    schedules s on e.id = s.event_id
order by 
    abs(unix_timestamp(schedule_datetime_from) - unix_timestamp(now())))
limit 1
于 2012-09-28T16:54:45.427 に答える
1

これは私のために働いています:

SELECT * FROM table WHERE DATE(date_column)BETWEEN DATE(CURDATE())AND DATE(CURDATE()+ 7);

これはあなたに一週間の頭を与えるでしょう!

于 2014-05-09T01:37:23.910 に答える
0

日付の間にイベントのグループを選択したい場合は、

SELECT * FROM events WHERE date BETWEEN 'mm-dd-yyyy' AND 'mm-dd-yyyy'

最新の日付を選択する場合は、追加できます

ORDER BY date DESC LIMIT 1
于 2012-09-28T16:44:25.000 に答える