ホームページ > データベース > mysql チュートリアル > MySQL の自己結合は、毎日発生するイベントを見つけるのにどのように役立ちますか?

MySQL の自己結合は、毎日発生するイベントを見つけるのにどのように役立ちますか?

DDD
リリース: 2024-11-12 19:56:02
オリジナル
1055 人が閲覧しました

How do MySQL Self-Joins Help Find Events That Occur One Day After Another?

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、開始日、価格を選択します。

クエリの仕組み:

  1. クエリはまず、event1 からのレコードを特定します。 $id 変数を介して渡された指定された ID と一致します。
  2. event1 から識別されたレコードについて、次の日付を計算します。終了日から 1 日後。
  3. 計算された日付は、イベント 2 のレコードの開始日と比較されます。
  4. イベント 1 とイベント 2 は同一のテーブルであるため、イベント 2 で一致するレコードは次のとおりです。イベント 1 の終了から 1 日後の開始日。
  5. イベント 2 のこの一致するレコードは、1 日後に発生する次のイベント (イベント 2) を表します。 Event1.
  6. 最後に、クエリは Event2 の ID、開始日、価格を取得し、結果として表示します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート