Maison > Article > base de données > Comment fusionner les données de plusieurs tables MySQL dans une nouvelle table ?
Fusionner les données de plusieurs tables dans une nouvelle table à l'aide de MySQL
Problème :
Créer une nouvelle table MySQL qui combine des données et des colonnes spécifiques de trois tables existantes : personnes, taxonomie et détails. L'objectif est de créer un tableau qui comprend des attributs sélectionnés tels que le nom, le prénom, l'e-mail et l'âge.
Structure de tableau souhaitée :
ID | Last Name | First Name | Age | |
---|---|---|---|---|
1 | Smith | Fred | Fred@.. | 36 |
2 | Jones | Tom | Tom@.. | 29 |
3 | Doe | Jane | Jane@.. | 27 |
Solution :
Pour ce faire, effectuez un 3-way JOIN sur les trois tables :
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';
Cette requête combine les données des tables de personnes, de détails et de taxonomie en fonction des identifiants correspondants. Il sélectionne les colonnes souhaitées (id, last_name, first_name, email et age) dans les tables jointes.
Méthode alternative :
Si vous avez déjà créé la new_table table, vous pouvez y insérer des données à l'aide de la requête suivante :
INSERT INTO new_table (id, last_name, first_name, email, age) SELECT p.id, p.last_name, p.first_name, p.email, 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';
Multiple Attributs :
Pour inclure plusieurs attributs des trois tables, vous pouvez 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';
En employant plusieurs JOIN, vous pouvez fusionner des données et des colonnes de divers tableaux dans un nouveau tableau complet.
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!