Puis-je résoudre ce problème avec du MySQL pur ? (rejoindre des valeurs séparées par ';' dans une colonne)
Question :
Étant donné deux tables, une table utilisateur t1 avec une colonne de ressources contenant '; ' des ID de ressources séparés et une table de ressources t2 avec un ID et des données, vous souhaitez joindre t1 et t2 pour obtenir une table avec des données d'utilisateur et de ressources.
Problème :
Vous ne pouvez pas utiliser de langages externes pour manipuler les résultats et la table user_resources est dénormalisée.
Solution :
Créez une table appelée série entière avec des nombres de 1 à une certaine limite. Utilisez les fonctions COUNT_IN_SET et VALUE_IN_SET, qui traitent la colonne de ressources comme un tableau, pour normaliser la table. Rejoignez ensuite des séries entières pour extraire les identifiants de ressources individuels.
<code class="sql">SELECT user_resource.user, resource.data FROM user_resource JOIN integerseries AS isequence ON isequence.id <= COUNT_IN_SET(user_resource.resources, ';') JOIN resource ON resource.id = VALUE_IN_SET(user_resource.resources, ';', isequence.id) ORDER BY user_resource.user, resource.data</code>
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!