ホームページ >データベース >mysql チュートリアル >中間テーブルを使用して外部キーなしでテーブルを結合するにはどうすればよいですか?

中間テーブルを使用して外部キーなしでテーブルを結合するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-15 18:10:43862ブラウズ

How Can I Join Tables Without Foreign Keys Using an Intermediary Table?

直接の外部キー関係を持たないテーブルの結合: 実践ガイド

リレーショナル データベースでは、多くの場合、さまざまなソースからのデータを結合するためにテーブルを結合する必要があります。 通常、外部キーによってこれらの関係が定義されますが、常にそうであるとは限りません。 このガイドでは、3 番目の中間テーブルを使用してテーブルを間接的に結合する方法について説明します。

チャレンジ

ForestsSpeciesTrees の 3 つのテーブルを想像してください。 Forests はフォレストの名前と場所を保存します。 Species には樹種と木材の種類がリストされています。 Trees は、その種やそれらが生息する森林など、個々の木の詳細を説明します。

目的は、共有するツリーに基づいて ForestsSpecies を結合することです。 ただし、ForestsSpecies の間には直接の外部キー リンクはありません。 代わりに、Trees はブリッジとして機能し、ForestsSpecies の両方を参照する外部キーを含みます。

解決策: 仲介者を介した間接的な参加

解決策は、

テーブルを中間リンクとして使用することにあります。 Trees を介して ForestsSpecies を結合することで、間接的に望ましい関係を作成します。Trees

SQL クエリの例

この SQL クエリは間接結合を示しています:

<code class="language-sql">SELECT Forests.Fo_name, Species.Sp_name, Species.Sp_woodtype
FROM Forests
INNER JOIN Trees ON Forests.Fo_name = Trees.Tr_forest
INNER JOIN Species ON Trees.Tr_species = Species.Sp_name
WHERE Forests.Fo_loc = 'ARTIC'
ORDER BY Forests.Fo_name, Species.Sp_name;</code>
このクエリの手順:

  • は、一致するフォレスト名を使用して INNER JOINForests を接続します。Trees
  • 別の
  • は、一致する種名を介して INNER JOINTrees をリンクします。Species
  • は、結果を「ARTIC」地域の森林にフィルターします。WHERE
  • は、読みやすいように出力を並べ替えます。ORDER BY
概要

この方法では、共有テーブルをブリッジとして使用することで、外部キーを直接接続せずに効率的にテーブルを結合します。 テーブルをリンクする共通の列を特定することは、この間接的な関係を確立するために重要であり、従来の外部キー制約がなくても複雑な結合操作を可能にします。

以上が中間テーブルを使用して外部キーなしでテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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