Maison > base de données > tutoriel mysql > Comment puis-je récupérer efficacement les noms d'utilisateur d'une colonne séparée par des virgules dans une base de données ?

Comment puis-je récupérer efficacement les noms d'utilisateur d'une colonne séparée par des virgules dans une base de données ?

Susan Sarandon
Libérer: 2024-12-17 13:32:18
original
635 Les gens l'ont consulté

How Can I Efficiently Retrieve Usernames from a Comma-Separated Column in a Database?

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";
Copier après la connexion

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 :

  • Intégrité et précision des données améliorées
  • Requêtes plus rapides et temps de traitement réduit
  • Maintenance et modification simplifiées des données
  • Relations en cascade pour le maintien de l'enfant enregistrements

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal