Joindre des tables avec des valeurs séparées par des virgules : un guide complet
Les tables de base de données contiennent souvent des valeurs séparées par des virgules dans certaines colonnes. Cela pose un défi lors de l'interrogation des données, car chaque valeur doit être associée à sa ligne correspondante. Un scénario courant consiste à joindre deux tables où une colonne contient des valeurs séparées par des virgules faisant référence à l'autre table.
Considérons l'exemple suivant :
Tableau Notes
nid | forDepts |
---|---|
1 | 1,2,4 |
2 | 4,5 |
Tableau des positions
id | name |
---|---|
1 | Executive |
2 | Corp Admin |
3 | Sales |
4 | Art |
5 | Marketing |
L'objectif consiste à associer la colonne « forDepts » de la table Notes aux noms de département correspondants de la table Positions. Le résultat souhaité doit être :
nid | DepartmentName |
---|---|
1 | Executive, Corp Admin, Art |
2 | Art, Marketing |
Sans modifier la structure de la base de données, cela peut être obtenu en utilisant une combinaison de fonctions SQL.
En utilisant FIND_IN_SET et GROUP_CONCAT
Une combinaison des fonctions FIND_IN_SET et GROUP_CONCAT peut être utilisée pour extraire et agréger les noms de département pour chaque Valeur 'forDepts' :
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
Comment ça marche
Résultat
La sortie de la requête serait la table souhaitée avec la colonne 'nid' jointe au 'DepartmentName' correspondant séparé par des virgules column.
Conclusion
En tirant parti des fonctions FIND_IN_SET et GROUP_CONCAT, nous pouvons joindre efficacement deux tables avec des valeurs séparées par des virgules, ce qui nous permet d'extraire et d'agréger des données entre les tables. , même lorsque la structure de la base de données n'est pas normalisée. Cette technique s'avère particulièrement utile lors de l'exportation de données vers d'autres applications, comme Excel.
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!