「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL で別のイベントの後に特定の日数が経過したイベントを検索する方法

MySQL で別のイベントの後に特定の日数が経過したイベントを検索する方法

2024 年 11 月 11 日に公開
ブラウズ:633

How to Find Events Following Another Event by a Specific Number of Days in MySQL?

MySQL の自己結合について

SQL データベースで使用される手法である自己結合を使用すると、テーブル自体に対してクエリを実行できます。この場合、MySQL 自己結合を詳しく調べて、別のイベントの後に指定された日数だけ開始日が続くイベントを検索します。

クエリの内訳:

SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id=$id;

1.データ抽出 (FROM)

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 

この部分は、自己結合のために、event1 とevent2 として表される 2 つのテーブル mm_eventlist_dates からデータを抽出します。

2。結合条件 (ON)

ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)

この条件は、2 つのテーブル間の結合を定義します。イベント 2 の開始日がイベント 1 の終了日の 1 日後である必要があることを指定します。

3。フィルタリング (WHERE)

WHERE event1.id=$id

このフィルタは、指定された $id に一致する ID を持つイベントに結果を制限します。

4.フィールド選択 (SELECT)

SELECT event2.id, event2.startdate, event2.price

この部分は、event2 テーブルのどのフィールドを結果セットに含めるかを指定します: ID

仕組み:

  1. クエリは、mm_eventlist_dates テーブルから 2 つのレコード セットを抽出することから始まります。
  2. 結合条件は、開始日がイベント 1 レコードの終了日の 1 日後に一致するイベント 2 レコードをフィルターすることによって結果を絞り込みます。
  3. フィルターはユーザー指定の $id を適用して、イベント 1 レコードをさらに絞り込みます。
  4. 返される結果には、event2 テーブルの目的のフィールドが含まれており、event1 の 1 日後のイベントを表します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3