Ciao Ho una tabella che fa riferimento a se stessa e devo essere in grado di selezionare il genitore e tutti i suoi record figlio da un determinato ID padre.SQL Server: come ottenere tutti i record figlio dati un id padre in una tabella autoreferenziale
Il mio tavolo è la seguente:
ID | ParentID | Name
-----------------------
1 NULL A
2 1 B-1
3 1 B-2
4 2 C-1
5 2 C-2
Così, per l'esempio precedente mi piacerebbe essere in grado di passare in un valore di 1 e ottenere tutti i record di cui sopra.
Finora, ho elaborato la seguente funzione di valore di tabella ricorsiva, ma non si comporta come previsto (solo restituendo il primo record).
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 per cercare di risolvere se stessi, prima di fare domande qui. – iMatoria