planetz Ответов: 2

Многоуровневый запрос в ms access


Всем Привет,

Я пытаюсь написать запрос в ms access 2013, который будет выводить подчиненных и подчиненных подчиненных и так далее для данного менеджера. Нужен какой-то намек, так как я не могу придумать никакого решения. Я застрял только на первом уровне.
Любая помощь, подсказка или обходной путь будут очень полезны. Я использую ms access 2013 с c#.net.

таблица представлена в следующем виде. Например, для менеджера sm1 выход будет m1,m2,e1,e2, e3, а для менеджера m1 выход будет e1, e2.

emp	mangr
e1	m1
e2	m1
e3	m2
m1	sm1
m2	sm1
m3	sm2
e4	m3


Что я уже пробовал:

это простой запрос для получения подчиненных первого уровня:

Выберите Эми из теста, где мангр='ѕм1';

Но я не могу пойти дальше этого. Мне нужно Эми из теста которого мангр вывод этого запроса.

2 Ответов

Рейтинг:
15

Maciej Los

Вы должны использовать подзапрос вместе с пунктом. Я бы попробовал что-нибудь в этом роде:

SELECT emp
FROM Table1 
WHERE mangr IN
    (
     SELECT emp
     FROM Table1
     WHERE mangr='sm1'
     );


Для получения более подробной информации, пожалуйста, смотрите: Примеры критериев запроса-доступ[^]


Рейтинг:
1

Dave Kreskowiak

Это можно сделать с помощью реального SQL-движка с помощью общего табличного выражения (CTE).

Access не имеет никакой поддержки CTE. Я не знаю способа сделать это в одном запросе в Access. Для этого вам придется использовать код VBA.