From Rows to column in T-SQL (Dalle righe ad una colonna) in TSQL

12. agosto 2010

In questo modo trovate un esempio su come estrarre da due tabelle in relazione molti a molti tutte gli elementi della prima più tutti i valori in una colonna della seconda in un solo campo.

Forse con un esempio è più semplice spiegare il requisito:

Data una tabella prodotto una categoria in relazione molti a molti (tramite tabella prodottocategoria bisogna estrarre i dati nella seguente maniera [prodotto], [elenco delle categorie separate da virgola].

Definizione delle tabelle:

  • PRODOTTO
    • ID int PK
    • Description NVARCHAR(50)
  • CATEGORIA
    • ID int PK
    • Description NVARCHAR(50)
  • PRODOTTOCATEGORIA
    • PRODOTTO_ID int FK(PRODOTTO.ID)
    • CATEGORIA_ID int FK(CATEGORIA.ID)

 

Statement SQL:

 

SELECT PRO.Description                     AS Prodotto,
       STUFF((SELECT ',' + CAT.Description
                FROM Categoria             AS CAT
          INNER JOIN ProdottoCategoria     AS PCA ON PCA.Categoria_Id = CAT.ID
               WHERE PCA.Prodotto_Id = PRO.ID
             FOR XML PATH('')),1,1,'') AS Categoria
  FROM Prodotto AS PRO
Bookmark and Share DotnetKicks dotnetshoutout

Code , ,

Commenti

12/08/2010 13:09:11 #
From Rows to column in T-SQL (Dalle righe ad una colonna) in TSQL

You've been kicked (a good thing) - Trackback from DotNetKicks.com
12/08/2010 13:57:26 #
From Rows to column in T-SQL (Dalle righe ad una colonna) in TSQL

Thank you for submitting this cool story - Trackback from DotNetShoutout