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
Susan Sarandonoriginal
2025-01-15 07:54:43440parcourir

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>

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>

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>

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!

Déclaration:
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