使用以下存储过程来选择给定单位id的所有子单元。对于each unit only one child
是没有子单元用于选择子的SQL查询
ALTER PROCEDURE [dbo].[UnitSelectChildByID]
@company_ID INT,
@unit_ID INT
AS
BEGIN
DECLARE @parent INT
SET @[email protected]_ID
DECLARE @temp TABLE(id int)
WHILE((SELECT COUNT(*) FROM tblUnit WHERE [email protected]) >0)
BEGIN
INSERT INTO @temp SELECT unit_ID FROM tblUnit WHERE [email protected]
SET @parent=(SELECT unit_ID FROM tblUnit WHERE [email protected])
END
SELECT
unit_ID
,short_Name AS unit
FROM
tblUnit
WHERE
unit_ID IN (SELECT id FROM @temp) OR [email protected]_ID
END
这是正常工作。我想知道更好的方法是由avoiding while loop and table variable
不工作,查询选择其他家庭的孩子也...... – Nithesh
替换'ISNULL(p.parent_ID,@unit_ID) '用'ISNULL(u.parent_ID,u.unit_ID)''。对错误抱歉。 –
:agian错了..它只返回第一个孩子。 – Nithesh