ホームページ >データベース >mysql チュートリアル >MySQL でテーブルを自己結合して複数の行からデータを取得する方法

MySQL でテーブルを自己結合して複数の行からデータを取得する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-03 07:05:39505ブラウズ

How to Self-Join a Table in MySQL to Retrieve Data from Multiple Rows?

MySQL で同じテーブルを複数回結合する方法

MySQL は、テーブルをそれ自体と結合する機能を提供します。これにより、同じテーブルの異なる行からデータを取得し、行間に新しいリレーションシップを効率的に作成できるようになります。

この概念を説明するために、次のシナリオを考えてみましょう。

2 つのテーブルがあります。 「ドメイン」と「レビュー」です。 "domains" テーブルにはドメイン ID とドメイン名が保存され、"reviews" テーブルにはレビュー データと送信者 (rev_dom_from) と受信者 (rev_dom_for) の両方の参照ドメイン名が含まれます。

あなたのタスクは両方を表示することです。 Web ページ上のドメイン名。標準の LEFT JOIN を使用して 1 つのドメイン名を簡単に表示できますが、「rev_dom_from」列から 2 番目のドメイン名を取得するにはどうすればよいですか?

解決策は複数の結合を利用することです。 「ドメイン」テーブルに複数回結合することで、レビューと対応するドメイン名の間にさまざまな関係を確立できます。

SELECT toD.dom_url AS ToURL, 
    fromD.dom_url AS FromUrl, 
    rvw.*

FROM reviews AS rvw

LEFT JOIN domain AS toD 
    ON toD.Dom_ID = rvw.rev_dom_for

LEFT JOIN domain AS fromD 
    ON fromD.Dom_ID = rvw.rev_dom_from

このクエリでは:

  • toD はエイリアスです。結合された「domains」テーブルの最初のインスタンスでは、「To」ドメイン名を表します。
  • fromD は 2 番目のインスタンスのエイリアスです。 「From」ドメイン名を表す、結合された「domains」テーブルのインスタンス。

結合されたテーブルにエイリアスを付けることで、2 つのインスタンスを区別し、必要なデータを取得できます。同じテーブルを複数回結合するこの手法は一般に「自己結合」と呼ばれ、単一のテーブル内で複数のリレーションシップを確立する必要があるさまざまなシナリオに適用できます。

以上がMySQL でテーブルを自己結合して複数の行からデータを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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