MySQL の自己結合を理解する
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
ログイン後にコピー
クエリの分解:
FROM と JOIN:
- このクエリは 2 つの同一のテーブルのデータを結合します。 mm_eventlist_dates、JOIN キーワードを使用します。
- 同じテーブルを 2 回表す、event1 とevent2 という 2 つの仮想テーブルを作成します。
WHERE:
- この句は、ID に基づいて、event1 から特定のレコードを選択します。このレコードが Event1 を表すと仮定します。
ON:
- この句は、2 つの仮想テーブル間の関係を定義します。
- イベント 2 の開始日とイベント 1 の終了日を 1 だけオフセットして比較します。 day.
- この条件により、event2 の開始日は、event1 の終了後ちょうど 1 日になることが保証されます。
SELECT:
- この句は、クエリから取得するフィールドを指定します。
- この場合、イベント 2 の ID、開始日、価格を選択します。
クエリの仕組み:
- クエリはまず、event1 からのレコードを特定します。 $id 変数を介して渡された指定された ID と一致します。
- event1 から識別されたレコードについて、次の日付を計算します。終了日から 1 日後。
- 計算された日付は、イベント 2 のレコードの開始日と比較されます。
- イベント 1 とイベント 2 は同一のテーブルであるため、イベント 2 で一致するレコードは次のとおりです。イベント 1 の終了から 1 日後の開始日。
- イベント 2 のこの一致するレコードは、1 日後に発生する次のイベント (イベント 2) を表します。 Event1.
- 最後に、クエリは Event2 の ID、開始日、価格を取得し、結果として表示します。
以上がMySQL の自己結合は、毎日発生するイベントを見つけるのにどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。