Heim > Datenbank > MySQL-Tutorial > Wie verkette ich Benutzernamen aus mehreren Datensätzen in T-SQL mithilfe von FOR XML PATH()?

Wie verkette ich Benutzernamen aus mehreren Datensätzen in T-SQL mithilfe von FOR XML PATH()?

Barbara Streisand
Freigeben: 2025-01-15 06:58:42
Original
187 Leute haben es durchsucht

How to Concatenate User Names from Multiple Records in T-SQL Using FOR XML PATH()?

Effizientes Kombinieren von Benutzernamen in T-SQL mit FOR XML PATH()

Herausforderung: Wir müssen Benutzernamen aus mehreren Datensätzen innerhalb einer komplexen Datenbankstruktur kombinieren, die mehrere Tabellen mit Viele-zu-Viele-Beziehungen umfasst. Das Ziel besteht darin, Daten aus zwei Tabellen anzuzeigen und gleichzeitig Namen aus einer dritten zu verketten, wodurch eine durch Kommas getrennte Liste von Benutzervornamen (FName) erstellt wird, die jeder Bewertung zugeordnet sind.

Lösung: Nutzung von FOR XML PATH()

Die FOR XML PATH()-Methode bietet eine prägnante Lösung für diese Zeichenfolgenverkettungsaufgabe. Hier ist der T-SQL-Code:

<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 UserNames
FROM    @Reviews r</code>
Nach dem Login kopieren

Aufschlüsselung:

  • Die Hauptanweisung SELECT ruft alle Spalten (*) aus der Tabelle @Reviews ab.
  • Die verschachtelte SELECT-Anweisung führt die Verkettung durch. Es verbindet die Tabellen @Users und @Reviewers mit UserID, um Benutzer mit Bewertungen zu verknüpfen.
  • Die WHERE-Klausel filtert die Benutzer, sodass nur diejenigen einbezogen werden, die mit der aktuellen Bewertung verknüpft sind (übereinstimmend mit ReviewID).
  • FOR XML PATH('') konvertiert die verketteten FName-Werte in eine einzelne XML-Zeichenfolge und erstellt so effektiv eine durch Kommas getrennte Liste (das abschließende Komma muss behandelt werden, siehe unten).
  • Das Ergebnis wird der Spalte UserNames zugeordnet.

Ausgabe und Verfeinerung:

Diese Abfrage generiert das gewünschte Ergebnis: Die Details jeder Bewertung (Bewertungs-ID, Bewertungsdatum usw.) werden zusammen mit einer durch Kommas getrennten Liste der zugehörigen Vornamen der Benutzer angezeigt. Um das abschließende Komma zu entfernen, können Sie eine STUFF-Funktion verwenden:

<code class="language-sql">SELECT  *,
        STUFF(( 
            SELECT  ',' + u.FName
            FROM    @Users u INNER JOIN 
                    @Reviewers rs ON u.UserID = rs.UserID
            WHERE   rs.ReviewID = r.ReviewID
            FOR XML PATH('')
        ), 1, 1, '') AS UserNames
FROM    @Reviews r</code>
Nach dem Login kopieren

Diese verbesserte Version verwendet ',' u.FName, um ein Komma voranzustellen, und entfernt dann STUFF das führende Komma, wodurch eine saubere, durch Kommas getrennte Liste von Benutzernamen bereitgestellt wird.

Das obige ist der detaillierte Inhalt vonWie verkette ich Benutzernamen aus mehreren Datensätzen in T-SQL mithilfe von FOR XML PATH()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage