SQL Server concaténer des lignes à l'aide de plusieurs tables connexes

J'ai déjà recherché mon problème, mais la plupart des exemples (sinon tous) ne traitent qu'une ou deux tables avec une relation un-à-plusieurs entre elles. Alors, voici mon scénario:

Ma première table est:

OrderID Quantity Price ---------------------------------- 18 1000.00 160.00 19 1000.00 40.00 22 1000.00 40.00 23 100.00 500.00 24 10.00 50.00 

Ma deuxième table est:

 ExtrasID Name ------------------- 1 Value 1 2 Value 2 3 Value 3 4 Value 4 5 Value 5 

J'ai une relation many-to-many établie entre les tables ci-dessus, donc il y a une troisième table (commune) qui est la suivante:

 OrderExtrassID OrderExtras_OrderID OrderExtras_ExtrasID ---------------------------------------------------------------- 20 19 2 22 22 3 23 23 2 24 23 5 

Maintenant, tout ce que je veux faire, c'est get un résultat tel que:

 OrderID Extras ---------------------------- 18 NULL 19 Value 2 22 Value 3 23 Value 2, Value 5 24 NULL 

Il y a beaucoup d'exemples utilisant XML PATH, PIVOT, CTE etc., mais aucun de ceux-ci ne semble m'aider avec mon scénario, ou du less je n'ai pas réussi à les étudier en profondeur, afin de faire mon travail …

Merci d'avance,

Je suggérerais d'utiliser For XML pour returnner plusieurs lignes dans une seule ligne, puis en utilisant STUFF pour supprimer la virgule supplémentaire. Quelque chose comme ça:

 SELECT O.OrderId ,STUFF( ( SELECT ',' + E.Name AS [text()] FROM OrderExtras OE Inner Join Extras E ON E.ExtrasId = OE.OrderExtras_ExtrasID WHERE O.OrderId = OE.OrderExtras_OrderID ORDER BY E.Name FOR XML PATH('') ), 1, 1, '') AS ColList FROM Orders O 

Et voici le violon SQL .

Bonne chance.