我想进行查询,将产品名称设置为产品NAme +类别名称,其中类别可以是多个
Update P Set P.Name = ISNULL(P.Name,'')+','+ C.NAme
from Product P
Left Outer Join Category C On P.CategoryId = C.Id.
现在一个产品可以有多个类别 例如。 Alpenliebe Jar产品可以有多个类别作为Toffies和Candies 我想把它的名字设置为Alpenliebe Jar,Toffies,Candies 我当前的查询有效,但只设置名称为Alpenliebe Jar,Toffies
任何帮助
答案 0 :(得分:1)
试试这个......
UPDATE P SET P.Name = P.Name+'-'+ SUBSTRING((SELECT ', ' + C.NAme FROM Product P INNER JOIN Category C ON P.CategoryId = C.Id
WHERE P.Name = PH.Name
ORDER BY P.Name FOR XML PATH('')),2,200000) FROM Product PH
答案 1 :(得分:1)
试试这个: -
Update p
Set P.Name = STUFF((
SELECT P.Name + ',' + IsNull(CName,'')
FROM Category c
WHERE p.CategoryID = c.ID
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
from Product p
答案 2 :(得分:0)
试试这个
DECLARE @Names VARCHAR(8000)
SET @Names = SELECT COALESCE(@Names + ',', '') + C.Name FROM Category JOIN Product P On P.CategoryId = C.Id.
Update P Set P.Name = ISNULL(P.Name,'')+ ',' + @Names
FROM Product P
答案 3 :(得分:0)
WITH cte(Id,Name)
AS
(
SELECT ID, Name
FROM Category
WHERE [CategoryId] IS NULL
UNION ALL -- starts recursion
SELECT ID, P.Name +',' C.Name
FROM Category C
JOIN cte P ON P.ID = C.[ParentId]
)
Update P Set P.Name = C.NAme + ISNULL(P.Name,'')
from Product P
Left Outer Join Category C On P.CategoryId = C.Id