Joindre des données de plusieurs tables à l'aide de valeurs délimitées dans MySQL
Question :
Comment peut-on Je récupère efficacement les données de plusieurs tables dont les valeurs sont séparées par des points-virgules dans l'une des colonnes, sans utiliser de langages externes ni introduire de table de liaison ?
Réponse :
À Pour résoudre ce problème, nous pouvons utiliser une technique qui convertit les valeurs séparées par des points-virgules en lignes individuelles. Cela nous permet de joindre les tables et d'obtenir le résultat souhaité.
Solution :
La solution fournie utilise deux fonctions MySQL personnalisées :
Ces fonctions sont combinées avec une jointure entre les tables utilisateur et ressource, en utilisant la table des séries entières pour parcourir le point-virgule- valeurs séparées :
<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, ';') /* normalize */ JOIN resource ON resource.id = VALUE_IN_SET(user_resource.resources, ';', isequence.id) ORDER BY user_resource.user, resource.data</code>
Cette requête aboutit à un tableau où les ressources de chaque utilisateur sont représentées sous forme de lignes individuelles, ce qui nous permet de nous joindre facilement à la table des ressources pour obtenir les données correspondantes.
Informations supplémentaires :
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!