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"
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
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';
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';
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!