Maison >base de données >tutoriel mysql >Comment joindre deux tables avec des valeurs séparées par des virgules à l'aide de SQL ?
Énoncé du problème
La normalisation de la base de données peut grandement améliorer la gestion des données, mais parfois des limitations structurelles empêchent la mise en œuvre. Cette question explore une méthode pour associer des valeurs séparées par des virgules dans une table avec les valeurs d'une deuxième table lorsque la normalisation n'est pas une option.
Solution
Dans le scénario fourni , nous visons à combiner les valeurs de la colonne « forDepts » de la table Notes avec leurs noms correspondants de la table Positions. Le résultat attendu est une liste d'ID de notes ("nid") avec les noms de département associés concaténés et séparés par des virgules.
Pour y parvenir, nous pouvons utiliser la fonction FIND_IN_SET() et la fonction GROUP_CONCAT(). Voici la requête SQL :
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
Explication
Notes supplémentaires
Le code PHP fourni semble afficher uniquement la première valeur de la colonne « forDepts ». Cela est probablement dû au LEFT JOIN utilisé dans la requête. Pour récupérer toutes les valeurs, envisagez plutôt d'utiliser un INNER JOIN.
Cette approche peut être appliquée dans des situations où les données sont stockées dans un format séparé par des virgules et où vous devez les associer à d'autres valeurs sans restructurer la base de données.
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!