У меня есть база данных MS-доступа, в которой есть столбцы ниже
ИД пользователя (первичный ключ)
Имя пользователя
Userparent (это не что иное, как идентификатор пользователя пользователя, который является боссом текущего пользователя)
userlevel (это позиция текущего пользователя в иерархии)
Есть только 3 уровня. например, если Том и Джерри работают на Боба, а Боб и Билл - на Стива, данные в таблице будут выглядеть так:
ИД пользователя, Имя пользователя, Пользователь-родитель, пользователь-уровень (это заголовки столбцов)
1, Стив, 0, 1
2, Боб, 1, 2
3, Том, 2, 3
4, Джерри, 2, 3
5, Билл, 1, 2
Мне нужно использовать SQL-запрос в MS-Access 2003, чтобы упорядочить данные в новой таблице, которая будет иметь 3 столбца. Уровень 1, уровень 2, уровень 3. и сотрудники подуровня появятся сразу под более высоким уровнем. Вот так.
Level1, Level2, Level3 (это заголовки столбцов)
Steve, NULL, NULL
нуль, Боб, пустой
NULL, NULL, Том
NULL, NULL, Джерри
нуль, Билл, пустой
Поскольку рекурсивные запросы не поддерживаются в доступе, я застрял. Не могли бы вы помочь мне? заранее большое спасибо
UPDATE
После часа попыток самое близкое, что я мог бы сделать, это использовать SQL-запрос:
Select y.Level1, x.Level2, x.Level3
FROM
(Select ID, Empname as Level1 from Table1 where level=1)y
right outer join
(select b.FirstLevelID, b.Level2, a.Level3 from
(select ParentID as SecondLevelID, Empname as Level3 from Table1 where level = 3)a
right outer Join
(select ParentID as FirstLevelID, ID, Empname as Level2 from Table1 where level = 2) b
on a.SecondLevelID = b.ID)x
ON y.ID = x.FirstLevelID
Показывает результат таким образом,
Level1, level2, level3 (это заголовки)
Стив, боб, канистра
Стив, боб, Том
Стив, Билл, ноль
Это правильно устанавливает отношения, но, возможно, было бы лучше, если бы я мог убрать повторное появление имен Уровня 1 и Уровня 2 несколько раз. Может кто-нибудь изменить запрос, чтобы достичь этого, пожалуйста?