powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рекурсивные запросы
7 сообщений из 7, страница 1 из 1
Рекурсивные запросы
    #39990950
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте!!!
Есть рекурсивный запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH RECURSIVE rec_emp (emp_id) AS
( SELECT emp_id
  FROM Table1
  WHERE emp_id = 10
  UNION
  SELECT t.emp_id
  FROM Table1 t, rec_emp r
  WHERE 
   t.Empid = r.emp_id
)
 
SELECT * FROM rec_emp



Работает он хорошо, как надо.
Есть еще второй такой же рекурсивный запрос только с другой таблицей и по отделам:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH RECURSIVE rec_dep (dep_id) AS
( SELECT dep_id
  FROM Table2
  WHERE dep_id= 110
  UNION
  SELECT k.dep_id
  FROM Table2 k, rec_dep rd
  WHERE 
   k.Depid = rd.dep_id
)
 
SELECT * FROM dep_emp



Теперь обращаюсь к этим 2ум рекурсивным запросам через запрос из Table3:
Код: sql
1.
2.
3.
4.
5.
SELECT *
FROM Table3
WHERE DATE = '2020-02-02'
AND emp_id IN (SELECT emp_id FROM rec_emp) -- достаем айди сотрудников из первого запроса
AND dep_id IN (SELECT dep_id FROM rec_dep) -- достаем айди отделов из второго запроса


Как вложить один рекурсивный запрос в другой? Чтобы запрос из Table3 сработал? Или их объединить можно?
Подскажите, пожалуйста, в инете инфу по вложенным рекурсивным запросам не нашел, только примеры с одним рекурсивным запросом.
...
Рейтинг: 0 / 0
Рекурсивные запросы
    #39990963
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WITH RECURSIVE rec_emp (emp_id) -- нет такого синтаксиса в MSSQL.
WITH rec_emp (emp_id) -- вот такой есть.
...
Рейтинг: 0 / 0
Рекурсивные запросы
    #39990966
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
да извините, без RECURSIVE, спасибо за поправку!
...
Рейтинг: 0 / 0
Рекурсивные запросы
    #39990995
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86

Теперь обращаюсь к этим 2ум рекурсивным запросам через запрос из Table3:

вы запрашиваете запрос?

Покажите, что вы там исполняете. А то может все по отдельности.
...
Рейтинг: 0 / 0
Рекурсивные запросы
    #39991000
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,
вот так вот обращаюсь:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
WITH rec_emp (emp_id) AS
( SELECT emp_id
  FROM Table1
  WHERE emp_id = 10
  UNION
  SELECT t.emp_id
  FROM Table1 t, rec_emp r
  WHERE 
   t.Empid = r.emp_id
)
WITH rec_dep (dep_id) AS
( SELECT dep_id
  FROM Table2
  WHERE dep_id= 110
  UNION
  SELECT k.dep_id
  FROM Table2 k, rec_dep rd
  WHERE 
   k.Depid = rd.dep_id
)
SELECT *
FROM Table3
WHERE DATE = '2020-02-02'
AND emp_id IN (SELECT emp_id FROM rec_emp) -- достаем айди сотрудников из первого запроса
AND dep_id IN (SELECT dep_id FROM rec_dep) -- достаем айди отделов из второго запроса
...
Рейтинг: 0 / 0
Рекурсивные запросы
    #39991002
Guf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий86,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
WITH rec_emp (emp_id) AS
( SELECT emp_id
  FROM Table1
  WHERE emp_id = 10
  UNION
  SELECT t.emp_id
  FROM Table1 t, rec_emp r
  WHERE 
   t.Empid = r.emp_id
)
, rec_dep (dep_id) AS
( SELECT dep_id
  FROM Table2
  WHERE dep_id= 110
  UNION
  SELECT k.dep_id
  FROM Table2 k, rec_dep rd
  WHERE 
   k.Depid = rd.dep_id
)
SELECT *
FROM Table3
WHERE DATE = '2020-02-02'
AND emp_id IN (SELECT emp_id FROM rec_emp) -- достаем айди сотрудников из первого запроса
AND dep_id IN (SELECT dep_id FROM rec_dep) -- достаем айди отделов из второго запроса
...
Рейтинг: 0 / 0
Рекурсивные запросы
    #39991006
Дмитрий86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guf, аа вот в чем дело)) спасибо Вам, все сработало!!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рекурсивные запросы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]