Рекурсивный запрос - PullRequest
       4

Рекурсивный запрос

2 голосов
/ 22 октября 2010

У меня есть таблица, которая содержит следующие поля

  • Supervisorid
  • Empid

Это похоже на реферальную программу.Парень может ссылаться на 3 парней под ним, т. Е. 3 ссылается на трех парней, а именно 4 5 8 аналогично 4 ссылается на 9 10 и 11 аналогично 8 ссылается на 12, 13 это выглядит так:

Я хочу запросчтобы получить все EmpId под супервизором 3

1 Ответ

3 голосов
/ 22 октября 2010

Хотите, чтобы мы написали для вас решение или немного объяснили, как можно создавать рекурсивные запросы?

Пример их построения приведен на http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/ad/samples/clp/s-flt-db2.htm.

В справочнике IBM DB2 есть целая глава по рекурсии SQL.

Суть в том, что обычно используются следующие шаги:

  • вы определяете "семя". ВЫБЕРИТЕ SUPID, EMPID, 1 AS LVL ИЗ EMP, ГДЕ SUPID = 3;

  • вы назначаете этому имя. С SRC AS <ваше семя здесь>

  • вы определяете путь для перехода на «следующий уровень», начиная с начального числа, используя назначенное имя. ВЫБЕРИТЕ SRC.SUPID, F.EMPID, SRC.LVL + 1 ОТ SRC, ПУСТОЙ ГДЕ SRC.EMPID = EMP.SUPID

  • вы объединяете их вместе (внутри предложения WITH) с SRC AS <ваше семя здесь> UNION ALL <другой SELECT здесь>

  • (опционально) вы определяете, какие столбцы выбрать. ВЫБЕРИТЕ ЭМПИД, LVL ОТ SRC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...