Maison > base de données > tutoriel mysql > Comment combiner les données de trois tables MySQL dans une nouvelle table à l'aide de JOIN ?

Comment combiner les données de trois tables MySQL dans une nouvelle table à l'aide de JOIN ?

Linda Hamilton
Libérer: 2024-12-05 21:32:11
original
486 Les gens l'ont consulté

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

Combinaison de données de plusieurs tables dans une nouvelle table avec MySQL

Lorsque vous travaillez avec des bases de données relationnelles, vous devez souvent combiner les données de plusieurs tables dans une nouvelle table. Cette question montre comment y parvenir en utilisant un 3-way JOIN dans MySQL.

Objectif : Créer une nouvelle table qui comprend des données et des colonnes spécifiques de trois tables existantes (personnes, taxonomie et détails).

Existant Tableaux :

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"
Copier après la connexion

Résultat souhaité (nouveau tableau) :

id  last_name  first_name  email   age
1   Smith       Fred        Fred@.. 36
2   Jones       Tom         Tom@..  29
3   Doe         Jane        Jane@.. 27
Copier après la connexion

Solution utilisant un 3-Way JOIN :

Pour créer la nouvelle table, nous devons effectuer un 3-way JOIN pour connecter les trois tables existantes en fonction sur les valeurs communes :

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';
Copier après la connexion

Ce JOIN combine les données de la table people avec la table de détails basée sur la colonne person_id, puis joint en outre la table de détails avec la table de taxonomie basée sur la colonne detail_id, en filtrant uniquement pour les lignes où la taxonomie est « âge ».

Approche alternative (pour plusieurs Attributs) :

Pour inclure plusieurs attributs (tels que l'âge, le sexe et la taille) du tableau des détails, vous devez effectuer des JOIN distinctes pour chaque attribut :

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';
Copier après la connexion

Cette approche vous permet de combiner les données de plusieurs colonnes du tableau de détails dans le nouveau tableau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal