Sql Server2005 проблема - PullRequest
       3

Sql Server2005 проблема

0 голосов
/ 22 октября 2010

EXACT копия Sql Server2005 проблема запроса

у меня есть таблица, которая содержит следующие поля

Supervisorid • Empid Это как реферальная программа.Парень может ссылаться на 3 парней под ним, т. Е. 3 ссылается на трех парней, а именно 4 5 8 аналогично, 4 ссылается на 9 10, и 11 аналогично 8 ссылается на 12, 13 это выглядит так.чтобы получить все EmpId под супервизором 3

1 Ответ

0 голосов
/ 22 октября 2010

Проверьте это . Он использует рекурсивную процедуру хранения, поэтому уровень ссылки будет ограничен.

Нерекурсивный вызов процедуры хранения решение .

С SQL2005 вы можете использовать рекурсивные запросы с использованием общих табличных выражений:

 WITH Report(Supervisorid , Empid , Title, Level)
    AS
    (
    -- Anchor member definition
        SELECT e.Supervisorid , e.Empid , e.Title,   0 AS Level
        FROM dbo.MyEmployees AS e
        WHERE Supervisorid = 3
        UNION ALL
    -- Recursive member definition
        SELECT e.Supervisorid , e.Empid , e.Title,   Level + 1
        FROM dbo.MyEmployees AS e
        INNER JOIN Report AS d
            ON e.Supervisorid = d.Empid 
    )
    -- Statement that executes the CTE
SELECT Supervisorid , Empid , Title, Level
FROM Report;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...