SQL Server: Como obter todos os registros filhos com um ID pai em uma tabela de referência própria
Oi eu tenho uma tabela que faz referência a si mesmo e eu preciso ser capaz de selecionar o pai e todos os seus registros filho de um determinado ID pai.
Minha tabela é a seguinte:
ID | ParentID | Name
-----------------------
1 NULL A
2 1 B-1
3 1 B-2
4 2 C-1
5 2 C-2
Portanto, para o exemplo acima, gostaria de poder passar um valor de 1 e obter todos os registros acima.
Até agora, eu criei a seguinte função com valor de tabela recursiva, mas ela não está se comportando como esperado (retornando apenas o primeiro registro).
CREATE FUNCTION [dbo].[SelectBranches]
(
@id INT
,@parentId INT
)
RETURNS @branchTable TABLE
(
ID INT
,ParentID INT
,Name INT
)
AS
BEGIN
IF @branchId IS NOT NULL BEGIN
INSERT INTO @branchTable
SELECT
ID
,ParentID
,Name
FROM
tblLinkAdvertiserCity
WHERE
ID = @id
END
INSERT INTO @branchTable
SELECT
br.ID
,br.ParentID
,br.Name
FROM
@branchTable b
CROSS APPLY
dbo.SelectBranches(NULL, b.ParentID) br
RETURN
END
GO