Das FOR XML Schlüsselwort in T-SQL kann dazu missbraucht werden die Resultate eines Sub-Select zu einem String zusammenzusetzen.

Schauen wir uns mal folgendes Datenmodell an:

erm.png

Wir möchten eine Liste aller Produkte ausgeben, und in derselben Liste zeigen in welchen Farben ein Produkt lieferbar ist. Mit Hilfe des FOR XML Konstrukts lässt sich das einfach in einer einzigen SQL Abfrage realisieren:

SELECT
  P.Name,
  (SELECT STUFF((
    SELECT ', ' + C.Name
    FROM 
      Color C
    INNER JOIN
      ProductColor PC ON PC.ColorId = C.ColorId
    WHERE
      PC.ProductId = P.ProductId
    FOR XML PATH('')), 1, 2, '')
  ) AS Colors
FROM
  Product P

Diese Abfrage liefert folgendes Ergebnis:

table2.png

Kommentare


Kommentare sind geschlossen.