Hola Tengo una tabla que hace referencia a sí misma y necesito poder seleccionar el padre y todos sus registros secundarios de un ID padre dado.Servidor SQL: Cómo obtener todos los registros secundarios dado un id principal en una tabla autorreferencial
Mi tabla es la siguiente:
ID | ParentID | Name
-----------------------
1 NULL A
2 1 B-1
3 1 B-2
4 2 C-1
5 2 C-2
lo tanto, para el ejemplo anterior me gustaría ser capaz de pasar de un valor de 1 y obtener todos los registros anteriores.
Hasta ahora, he encontrado la siguiente función recursiva con valores de tabla, pero no se comporta como se esperaba (solo devuelve el primer 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
+1 por intentar solucionarlo usted mismo, antes de hacer una pregunta aquí. – iMatoria