我有一个名为Summary的表,表中的数据如下所示:
ID Type Name Parent
1 Act Rent Null
2 Eng E21-01-Rent Rent
3 Prj P01-12-Rent E21-01-Rent
1 Act Fin Null
2 Eng E13-27-Fin Fin
3 Prj P56-35-Fin E13-27-Fin
我正在编写一个必须根据类型提取父级的SP。这里总是类型Act有ID 1,Eng有ID 2,Prj有ID 3。
ACT父类型总是NUll, 类型Eng父母是行动和 类型Prj parent是Eng
现在我有一个名为Detail的表。我正在编写一个SP来将详细信息表数据插入到Summary表中。
我将id作为参数传递:
我遇到了父母的问题。我怎么做到的?
我总是可以说当ID为1时父级为Null但是当ID为2时,父级是ID 1的名称,类似于ID为3,则父级是ID2的名称。
我如何得到它?
任何人都可以帮助我:
答案 0 :(得分:1)
我建议重新访问您的数据模型,但这可能会有所帮助......
/* @Parent is VarChar(255) because definition is unknown.
We use Top(1) because in example ID is not unique.
We assume the ID being passed in is declared as @ID.*/
Declare @ParentID Int
Set @ParentID=(@ID-1)
Declare @Parent VarChar(255)
Set @Parent = (Select Top(1) Name From Summary
Where ID=@ParentID)
只需将@Parent插入Parent列即可。
答案 1 :(得分:1)
我认为你必须有一个主键(另一个ID是唯一的),因为使用这个模型你将始终拥有该类型的第一行,例如prj将始终拥有父“E21-01-Rent”并且没办法达到“E13-27-Fin”。
最后尝试此查询
Select id,name,(Select Top 1 [Name] From [Summary]
Where ID=@ID -1) as parent2
from [Summary]
where id = @ID