2010-12-03 5 views
1

Ich habe eine typische selbstreferenzierende Tabelle von Mitarbeitern.SQL Server 2005 UDF zum Erstellen einer Tabelle Datentyp von sich selbst referenzierenden Tabellendaten

Wie können Sie eine UDF bauen einen Tabellendatentyp zurückzugeben, die in anderen Abfragen verwendet werden können, um so zu verbinden, dass ich die UDF ein id eines Benutzers in der Tabelle übergeben und ein Ergebnis dieses Benutzers id zu erhalten und alle Benutzer, die über eine mit ihm verbunden sind?

Die Tabelle ich habe, ist EmployeeId, ManagerID, Name ....

Alles was ich brauche ist ein EmployeeId und eine rekursive Ergebnis aller Aufzeichnungen spielte ManagerID ist ist die ID der in param weitergegeben, und jede der Aufzeichnungen dass diese haben als Manager, und so weiter ...

dank

Antwort

1
CREATE FUNCTION GetEmployees 
( 
    @EmployeeId int 
) 
RETURNS TABLE 
AS 
RETURN 
(
    WITH yourcte AS 
    (
    SELECT EmployeeId, ManagerID, Name 
    FROM Employees 
    WHERE EmployeeId = @EmployeeId 
    UNION ALL 
    SELECT e.EmployeeId, e.ManagerID, e.Name 
    FROM Employees e 
    JOIN yourcte y ON e.ManagerID = y.EmployeeId 
) 
SELECT EmployeeId, ManagerID, Name 
FROM yourcte 
) 
Verwandte Themen