0

これは XY の問題である可能性があるため、最初から説明します。

クライアントは Web サイトにイベント ページを持ち、CMS でイベントを管理できます。彼は、イベントの開始日と終了日を選択できる必要があり、開始日または終了日が先行しているかどうかも選択できなければなりません。

一部のイベントは約半年にわたって開催されるため、6 月から 12 月までとしましょう。これらのイベントは結果に表示される必要がありますが、実行時間が非常に長いため、イベント ページは開始日順に表示されるため、イベント ページで常に最初に表示されるイベントにはなりたくないのです。これが、彼が先頭の日付を選択できる理由です。この例で終了日が先行している場合、最初に 6 月以降に開始される他のイベントは、このイベントよりもリストの上位に表示される必要がありますが、開始日が先行している場合、イベントはまったく表示されません。現在の日付は 6 月 1 日以降ですが、開始日が後のイベントや終了日が先行するイベントよりもリストの上位に表示される必要があります。

これは理にかなっていますか?

これらは私が現在持っている関連する列です

event_id           (int)
event_name         (varchar)
event_startdate    (int, unix timestamp through PHP)
event_enddate      (int, unix timestamp through PHP)
event_date_leading (int, 1 for enddate, 0 for startdate)

簡単に言えば、次のようなクエリを探していると思いますが、MySQL に変換できません。

select all events from events_table but dont show the events that have event_date_leading 0 and the startdate is in the past, then, place events that have event_date_leading 0 higher than events that have events_date_leading 1 while their event_startdate is actually earlier

クエリである種の二重ソートが必要なようですが、それが可能かどうかはわかりません。

私がこれまでに試したことは、すべてのイベントを取得し、それらの日付と先頭の値を PHP でチェックし、それに従って表示する/表示しないことですが、それでも希望どおりに並べ替えることができません。

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1