SQL Server: So erhalten Sie alle untergeordneten Datensätze mit einer übergeordneten ID in einer selbstreferenzierenden Tabelle
Hallo, ich habe eine Tabelle, die sich selbst referenziert, und ich muss in der Lage sein, das übergeordnete Element und alle seine untergeordneten Datensätze aus einer bestimmten übergeordneten ID auszuwählen.
Mein Tisch ist wie folgt:
ID | ParentID | Name
-----------------------
1 NULL A
2 1 B-1
3 1 B-2
4 2 C-1
5 2 C-2
Für das obige Beispiel möchte ich also den Wert 1 übergeben und alle oben genannten Datensätze abrufen können.
Bisher habe ich mir die folgende rekursive Tabellenwertfunktion ausgedacht, die sich jedoch nicht wie erwartet verhält (nur den ersten Datensatz zurückgibt).
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