Maison > base de données > tutoriel mysql > Comment concaténer les prénoms de plusieurs évaluateurs en une seule chaîne séparée par des virgules dans T-SQL ?

Comment concaténer les prénoms de plusieurs évaluateurs en une seule chaîne séparée par des virgules dans T-SQL ?

Susan Sarandon
Libérer: 2025-01-15 07:54:43
original
401 Les gens l'ont consulté

How to Concatenate Multiple Reviewers' First Names into a Single Comma-Separated String in T-SQL?

Combinaison de plusieurs champs d'enregistrement en T-SQL

En T-SQL, il est souvent nécessaire de regrouper des champs de plusieurs enregistrements en fonction d'un autre champ. Considérez le scénario suivant :

Vous disposez de trois tableaux : Avis, Évaluateurs et Utilisateurs. La table Reviews contient ReviewID et ReviewDate. La table Reviewers contient ReviewerID, ReviewID et UserID. Enfin, la table Utilisateurs contient UserID, FName et LName.

Défi :

Vous souhaitez afficher une liste d'avis, chacun contenant sa date d'avis correspondante et une liste de noms de tous les évaluateurs associés à cet avis, séparés par des virgules. Le résultat souhaité ressemble à ceci :

<code>ReviewID---ReviewDate----Users
----------------------------
1----------12/1/2009-----Bob, Joe, Frank
2----------12/9/2009-----Sue, Alice</code>
Copier après la connexion

au lieu de :

<code>ReviewID---ReviewDate---User
----------------------------
1----------12/1/2009----Bob
1----------12/1/2009----Joe
1----------12/1/2009----Frank
2----------12/9/2009----Sue
2----------12/9/2009----Alice</code>
Copier après la connexion

Solution :

Une façon de résoudre ce problème est d'utiliser la méthode FOR XML PATH('') :

<code class="language-sql">SELECT  *,
        ( 
            SELECT  u.FName + ','
            FROM    @Users u INNER JOIN 
                    @Reviewers rs ON u.UserID = rs.UserID
            WHERE   rs.ReviewID = r.ReviewID
            FOR XML PATH('')
        ) AS Users
FROM    @Reviews r</code>
Copier après la connexion

Voici une répartition de la requête :

  • Ligne 1 : Sélectionnez les colonnes nécessaires dans le tableau Reviews : ReviewID et ReviewDate.

  • Lignes 4 à 9 : Utilisez une sous-requête pour récupérer une liste de noms séparés par des virgules pour chaque commentaire.

      La sous-requête
    • rejoint les tables Utilisateurs et Réviseurs en fonction de UserID.
    • Il sélectionne la colonne FName et concatène une virgule après chaque nom.
    • La section
    • FOR XML PATH('') regroupe les résultats en une seule chaîne.
  • Ligne 10 : Le résultat de la sous-requête est alias Utilisateurs.

Cette sortie révisée clarifie l'alias et améliore la lisibilité. La fonctionnalité de base reste la même, concaténant efficacement les prénoms des réviseurs dans une chaîne séparée par des virgules.

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