Я создаю диаграмму состояний с сохранением данных в простой самоссылающейся таблице (JobPath)
JobId - ParentJobId
Я использовал стандартный SQL CTE для получения данных, который работал отлично, пока я не получил следующие данные
JobId - ParentId
1 2
2 3
3 4
4 2
Теперь, как вы можете видеть, Задание 4 связано с Заданием 2, которое переходит к Заданию 3, а затем к Заданию 4 и т. Д.
Можно ли как-то сказать, что мой запрос не должен извлекать данные, которые у него уже есть?
Вот мой текущий запрос
WITH JobPathTemp (JobId, ParentId, Level)
AS
(
-- Anchor member definition
SELECT j.JobId, jp.ParentJobId, 1 AS Level
FROM Job AS j
LEFT OUTER JOIN dbo.JobPath AS jp
ON j.JobId = jp.JobId
where j.JobId=1516
UNION ALL
-- Recursive member definition
SELECT j.JobId, jp.ParentJobId, Level + 1
FROM dbo.Job as j
INNER JOIN dbo.JobPath AS jp
ON j.JobId = jp.JobId
INNER JOIN JobPathTemp AS jpt
ON jpt.ParentId = jp.JobId
WHERE jp.ParentJobId <> jpt.JobId
)
- Оператор, который выполняет CTE
SELECT * FROM JobPathTemp