Extraire les noms d'utilisateur d'une colonne séparée par des virgules
Considérez un scénario dans lequel vous avez plusieurs tables : tblA (utilisateurs), tblB (noms d'utilisateur), et tblC (nomenclature avec identifiants utilisateur séparés par des virgules). L'objectif est de récupérer tous les noms d'utilisateur lors de la recherche d'une valeur de nomenclature spécifique.
Approche existante et limitations
La requête fournie tente d'utiliser une jointure croisée et une fonction de sous-chaîne pour extraire le premier ID utilisateur de la valeur séparée par des virgules. Cependant, cette approche est inefficace et ne fournit pas de résultats précis lorsqu'il existe plusieurs ID utilisateur associés à la nomenclature.
Schéma normalisé et requête améliorée
Il est recommandé de normalisez le schéma de la base de données en introduisant une table de jonction. La table tblC_user doit contenir deux colonnes : c_id (faisant référence à tblC) et userID (faisant référence à tblB). Cela éliminera le besoin d'ID utilisateur séparés par des virgules dans tblC.
La requête suivante montre comment extraire les noms d'utilisateur à l'aide du schéma normalisé :
SELECT * FROM tblC c JOIN tblC_user cu ON (c.id = cu.c_id) JOIN tblB b ON (b.userid = cu.userid) WHERE c.nname = "new1";
Cette requête récupérera efficacement tous les noms d'utilisateur associés. avec la nomenclature "new1".
Avantages de Normalisation
La normalisation du schéma de base de données offre plusieurs avantages :
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!