我有三张表如下:
OrderProductVariant
Id | ProductVariantId
----------------------------------------
1 | 22
2 | 23
3 | 24
4 | 25
ProductVariant
Id | ProductId
----------------------------------------
22 | 34
22 | 35
23 | 36
23 | 37
24 | 38
24 | 39
产品
Id | Product
----------------------------------------
34 | KBDMouse800
35 | KBDMK250
36 | LaptopCorei7
37 | LaptopCorei5
38 | BluetoothMouse1000
39 | PresentorR800
我希望输出结果为:
OrderProductVariant.Id | Product
-----------------------------------------
1 | KBDMouse800, KBDMK250
2 | LaptopCorei7, LaptopCorei5
3 | BluetoothMouse1000, PresentorR800
答案 0 :(得分:2)
当前查询将提供表OrderProductVariant
中的所有记录。也许现在是时候弄清楚如何过滤不匹配的记录了。
SELECT o.ID,
STUFF((SELECT ',' + ' ' + b.Product
FROM ProductVariant a
INNER JOIN Product b
ON a.ProductId = b.Id
WHERE a.Id = o.ProductVariantId
FOR XML PATH (''))
, 1, 1, '') AS ProductList
FROM OrderProductVariant AS o
GROUP BY o.ID, o.ProductVariantId