ホームページ  >  記事  >  データベース  >  MySQL の自己結合は、別のイベントの 1 日後のイベントをどのように見つけますか?

MySQL の自己結合は、別のイベントの 1 日後のイベントをどのように見つけますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-12 02:16:01560ブラウズ

How do MySQL self-joins find events following another event by one day?

MySQL の自己結合について

最近のクエリでは、MySQL の自己結合の概念について説明しました。目標は、別のイベント (Event1) の 1 日後のイベント (Event2) に関する情報を取得することでした。クエリは正常に実行されますが、その機能についてはさらに理解する必要があります。

クエリの分割:

クエリはいくつかの異なる部分に分割できます:

  • データ取得:

    • FROM mm_eventlist_datesevent1: mm_eventlist_dates という名前のテーブルからデータを選択し、エイリアスevent1を割り当てます。
    • JOIN mm_eventlist_datesevent2: mm_eventlist_dates で自己結合を実行し、event2 としてエイリアスされた 2 番目の仮想テーブルを作成します。
  • 結合条件:

    • ONevent2.startdate = date_add(event1.enddate, INTERVAL 1 DAY):event1 の終了日に 1 日を加えた日付と一致する開始日に基づいて、event2 レコードをフィルターする結合条件を指定します。
  • フィルタリング:

    • WHEREevent1.id = $id:event1 テーブルをフィルタリングして、指定された ID を持つレコードのみを取得します。

仕組み:

  1. レコードの選択: WHERE 句は最初に特定のイベント (Event1) を取得します。 ID に基づいて行われます。
  2. 日付計算: date_add() 関数は、選択した Event1 の終了日の翌日を計算します。
  3. フィルタリングの結合:次に、結合条件は、開始日が計算された日付と一致するイベント 2 のレコードと一致します。
  4. データ抽出: 最後に、SELECT 句は、event2 テーブルから ID、開始日、価格の 3 つのフィールドを取得します。 .

簡略化された視覚化:

各イベントに ID、開始日、価格が含まれる 2 つの別々のイベント リスト (Event1 と Event2) を想像してください。クエリの手順は次のとおりです。

  1. 指定された ID で Event1 を見つけます。
  2. Event1 の終了日の翌日を計算します。
  3. 開始日が一致する Event2 イベントを特定します。計算された日付。
  4. 一致する Event2 レコードから必要なフィールドを抽出します。

以上がMySQL の自己結合は、別のイベントの 1 日後のイベントをどのように見つけますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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