ホームページ >データベース >mysql チュートリアル >MySQL 自己結合クエリはイベントの終了日に関連するデータをどのように取得しますか?

MySQL 自己結合クエリはイベントの終了日に関連するデータをどのように取得しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-10 16:18:03333ブラウズ

How does a MySQL self-join query retrieve data related to an event's end date?

MySQL 自己結合クエリのメカニズムを理解する

自己結合クエリでは、同じテーブルの 2 つのインスタンスを結合して、関連する比較または取得を行います。データ。提示した SQL クエリの詳細を詳しく見てみましょう:

``
SELECTevent2.id,event2.startdate,event2.price
FROM mm_eventlist_datesevent1
JOIN mm_eventlist_datesevent2
ON イベント 2.開始日 = date_add(イベント 1.終了日, 間隔 1 DAY)
WHEREevent1.id=$id
``

パーツの詳細:

  • FROM: 結合するテーブルを指定します。この場合、両方とも「mm_eventlist_dates」のインスタンスです。テーブル。混乱を避けるために、これらを「event1」および「event2」と呼びます。
  • JOIN: 指定された条件に基づいて、行を「event1」から「event2」にリンクします。
  • ON: 結合条件を定義します。このクエリは次のとおりです:

    • event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
    • この条件は、開始日が終了日の 1 日後である 'event2' の行と一致します。の行の日付'event1'.
  • WHERE: 'event1.id' が指定された $id と一致する行のみを含むように結果をフィルターします。

仕組みのステップバイステップ:

  1. クエリは、指定された $id パラメーターに一致する 'event1' 内の行を識別することから始まります。
  2. 'event1' 内の一致する行ごとに、次の計算が行われます。 date_add() 関数を使用して終了日に 1 日を加えたもので、関連する行の開始日を表します。 'event2'.
  3. 次に、'event1' 行が、開始日がステップ 2 で計算された日付と一致する 'event2' の行に結合されます。
  4. 最後に、クエリは特定の列を選択します ( ID、開始日、価格) の一致した行から'event2'.

シナリオ例:

次のイベント データを含むテーブルを考えます:

ID Start Date End Date Price
1 2023-03-01 2023-03-10 0
2 2023-03-15 2023-03-22 0
3 2023-04-01 2023-04-08 0

$id を 1 に設定してクエリを実行すると、イベント終了日の 1 日後に始まるイベント 2 のデータが取得されます。 1:

ID Start Date Price
2 2023-03-15 0

以上がMySQL 自己結合クエリはイベントの終了日に関連するデータをどのように取得しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。