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 を持つレコードのみを取得します。
仕組み:
-
レコードの選択: WHERE 句は最初に特定のイベント (Event1) を取得します。 ID に基づいて行われます。
-
日付計算: date_add() 関数は、選択した Event1 の終了日の翌日を計算します。
-
フィルタリングの結合:次に、結合条件は、開始日が計算された日付と一致するイベント 2 のレコードと一致します。
-
データ抽出: 最後に、SELECT 句は、event2 テーブルから ID、開始日、価格の 3 つのフィールドを取得します。 .
簡略化された視覚化:
各イベントに ID、開始日、価格が含まれる 2 つの別々のイベント リスト (Event1 と Event2) を想像してください。クエリの手順は次のとおりです。
- 指定された ID で Event1 を見つけます。
- Event1 の終了日の翌日を計算します。
- 開始日が一致する Event2 イベントを特定します。計算された日付。
- 一致する Event2 レコードから必要なフィールドを抽出します。
以上がMySQL の自己結合は、別のイベントの 1 日後のイベントをどのように見つけますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。