Hallo Ich habe eine Tabelle, die sich selbst verweist und ich muss in der Lage sein, den übergeordneten und alle untergeordneten Datensätze aus einer bestimmten übergeordneten ID auszuwählen.SQL Server: Wie alle untergeordneten Datensätze eine übergeordnete ID in einer sich selbst referenzierenden Tabelle erhalten
Meine Tabelle 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
So für das obige Beispiel würde Ich mag Lage sein, in einem Wert von 1 passieren und die Datensätze alle oben zu erhalten.
Bisher habe ich die folgende rekursive Tabellenwert-Funktion entwickelt, aber sie verhält sich nicht wie erwartet (nur der erste Datensatz wird zurückgegeben).
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 für den Versuch, sich selbst zu lösen, bevor Sie hier eine Frage stellen. – iMatoria