表格结构:
ProjectID ParentID Name Path
38 2 client |2|38|
108 38 Sample1 |2|38|108
205 38 Sample2 |2|38|205
206 38 Sample3 |2|38|206
207 38 Sample4 |2|38|207
查询:
SELECT Name, ProjectId
FROM dbo.Projects project
WHERE ParentID = 38
这将为我提供上表中除第一行以外的所有行。
但是我希望实现以下目标!
ProjectID ParentID Name Path
108 38 clientSample1 |2|38|108
205 38 clientSample2 |2|38|205
206 38 clientSample3 |2|38|206
207 38 clientSample4 |2|38|207
SQL专家请让我知道如何实现这一目标的查询。感谢您的投入。
PN:对表结构感到抱歉。我还无法粘贴任何图片。
答案 0 :(得分:1)
如果我理解正确,您只需要在名称前面加上“客户”:
SELECT P1.ProjectId, P1.ParentId, P2.[Name] + P1.[Name], P1.Path
FROM Projects P1
INNER JOIN Projects P2 ON P1.ParentId = P2.ProjectId
Where P1.ParentId = 38
实际上,您将第二次将Projects表添加到自身,以查找父级的名称。从那里,您可以将两个名称连接在一起。
答案 1 :(得分:0)
第一行有一个ParentID = 2
,您的查询明确要求ParentID = 38
尝试:
SELECT Name, ProjectId FROM dbo.Projects project WHERE (ParentID = 38 OR ProjectId = 38)
答案 2 :(得分:0)
尝试以下两个
SELECT ProjectId,parentid, 'Client'+[name],path
FROM Project
WHERE parentid=38
或
DECLARE @String varchar(10)
SET @string=(SELECT name FROM Project WHERE parentid=2)
SELECT ProjectId,parentid,@string+name,path
FROM Project WHERE parentid=38