Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: osmor
решение в лоб:

SELECT DepID, ParentID  as ancestorID
FROM Departments
WHERE (((Departments.ParentID)<>0))
Union ALL
SELECT D.DepID, D1.ParentId as ancestorID
FROM Departments as D , Departments AS D1
WHERE  D.ParentId = D1.DepID and  D1.ParentID<>0
Union ALL
SELECT D.DepID, D2.ParentId as ancestorID
FROM Departments as D , Departments AS D1,Departments as D2
WHERE  D.ParentId = D1.DepID and  D1.ParentID = D2.DepID and D2.ParentID<>0
Order by DepId, ancestorID DESC

Union должно быть столько сколько возможно уровней -1 , для данного набора достаточно было бы 1 Union т.е.

SELECT DepID, ParentID  as ancestorID
FROM Departments
WHERE (((Departments.ParentID)<>0))
Union ALL
SELECT D.DepID, D1.ParentId as ancestorID
FROM Departments as D , Departments AS D1
WHERE  D.ParentId = D1.DepID and  D1.ParentID<>0
Order by DepId, ancestorID DESC


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.