У меня есть таблица местоположений. Каждое местоположение хранится в этой таблице в виде дерева. Записи могут быть частью любого другого местоположения и так далее.
В моей таблице местоположений я выполняю следующую команду tsql для получения всех местоположений с их вложенными местоположениями
WITH LocationTree AS (
SELECT L.* FROM Location L
UNION
SELECT L.* FROM LocationTree LT, Location L where L.ParentLocationID = LT.LocationID
)
SELECT * FROM LocationTree
Но выдает ошибку:
Recursive common table expression 'LocationTree' does not contain a top-level UNION ALL operator.
Ошибка говорит, что я должен использовать ОБЪЕДИНЕНИЕ ВСЕ вместо ОБЪЕДИНЕНИЕ, но ОБЪЕДИНЕНИЕ ВСЕ возвращает повторяющиеся строки. Я хочу выбрать отдельные строки, например, при использовании только UNION.
Как я могу использовать ключевое слово UNION в операторе WITH в SQL?