ホームページ >データベース >mysql チュートリアル >JOIN を使用して 3 つの MySQL テーブルのデータを新しいテーブルに結合する方法

JOIN を使用して 3 つの MySQL テーブルのデータを新しいテーブルに結合する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-05 21:32:11462ブラウズ

How to Combine Data from Three MySQL Tables into a New Table Using JOINs?

MySQL を使用して複数のテーブルのデータを新しいテーブルに結合する

リレーショナル データベースを使用する場合、多くの場合、複数のテーブルのデータを結合する必要があります。新しいテーブルに。この質問では、MySQL で 3 方向の JOIN を使用してこれを実現する方法を示します。

目的: 3 つの既存のテーブル (人、分類、およびテーブル) からの特定のデータと列を含む新しいテーブルを作成します。詳細)。

既存テーブル:

people
id  last_name  first_name  email
1   Smith       Fred        Fred@..
2   Jones       Tom         Tom@..
3   Doe         Jane        Jane@..

taxonomy
id  taxonomy    
1   age
2   gender
3   height

details
id  person_id   detail_id   content
1   1           1           36
2   1           2           M
3   1           3           5'10"
4   2           1           29
5   2           2           M
6   2           3           6'3"
7   3           1           27
8   3           2           F
9   3           3           5'8"

望ましい結果 (新しいテーブル):

id  last_name  first_name  email   age
1   Smith       Fred        Fred@.. 36
2   Jones       Tom         Tom@..  29
3   Doe         Jane        Jane@.. 27

3 方向 JOIN を使用したソリューション:

新しいテーブルを作成するには、次の操作を実行する必要があります。共通の値に基づいて 3 つの既存のテーブルを接続する 3 方向 JOIN:

CREATE TABLE new_table AS
SELECT p.*, d.content AS age
FROM people AS p
JOIN details AS d ON d.person_id = p.id
JOIN taxonomy AS t ON t.id = d.detail_id
WHERE t.taxonomy = 'age';

この JOIN は、people テーブルのデータを person_id 列に基づいて詳細テーブルと結合し、さらに詳細テーブルを結合します。分類テーブルをdetail_id列に基づいて使用し、分類が存在する行のみをフィルタリングします。 'age'.

代替アプローチ (複数の属性用):

詳細テーブルから複数の属性 (年齢、性別、身長など) を含めるには、次のようにします。属性ごとに個別の JOIN を実行する必要があります:

CREATE TABLE new_table AS
SELECT p.*, d1.content AS age, d2.content AS gender, d3.content AS height
FROM people AS p
JOIN details AS d1 ON d1.person_id = p.id
JOIN taxonomy AS t1 ON t1.id = d1.detail_id
JOIN details AS d2 ON d2.person_id = p.id
JOIN taxonomy AS t2 ON t2.id = d2.detail_id
JOIN details AS d3 ON d3.person_id = p.id
JOIN taxonomy AS t3 ON t3.id = d3.detail_id
WHERE t1.taxonomy = 'age' AND t2.taxonomy = 'gender' AND t3.taxonomy = 'height';

このアプローチにより、詳細内の複数の列のデータを結合できます。テーブルを新しいテーブルに追加します。

以上がJOIN を使用して 3 つの MySQL テーブルのデータを新しいテーブルに結合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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