Имеются три таблицы. СУБД - это Oracle 10g.Выберите самую высокую ассоциацию, если заданный уровень записи является случайным.
Сотрудники = отдельный работник запись
- emp_id (ПК)
- Emp_name
- различных детали полого
отдела = содержит иерархическую структуру орга
- Dept_code (PK)
- Название отдела
- parent_id (относится к dept_code в той же таблице для родительского отдела)
- DEPTH_LEVEL (1 = самый высокий уровень, 2 = суб-Depts из 1, и т.д. ... макс = 6)
- различные подробности поля
сотрудников Ассоциации = картографирования в отделах
- Assoc_id (рк)
- emp_id (Ф.К.)
- dept_code (Ф.К.)
- другие поля, которые относятся различные типы ассоциаций
Если объединение карт сотрудников отделов на различных глубинах, я хочу, чтобы выполнить запрос, который подсчитывает всех сотрудников, сгруппированных на глубине = 2. Если сотрудник работает в отделе на уровне 6, мне нужно будет разрешить уровень 5, затем уровень 4, затем уровень 3, чтобы перейти на уровень 2, но если они работают в отделе на уровне 3, мне нужно только решить до уровня 2.
Попытка выяснить наиболее эффективный способ. Пока я просматриваю 5 отдельных запросов, по одному для каждой глубины с различным количеством подзапросов, чтобы разрешить уровни глубины, а затем объединить с объединением. Моя вторая мысль заключалась в создании статической справочной таблицы для сопоставления каждого кода отдела с меткой уровня 2, но сохранение этой таблицы было бы проблематичным.
У кого-нибудь есть идеи?
Похоже, что вам нужна [иерархический запрос] (http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm). Не могли бы вы прикрепить код, чтобы мы знали, что вы делаете? И желаемый выход? Заголовок вопроса и эта часть: _ «Я хочу запустить запрос, который считает всех сотрудников» _, немного запутанным. Любые детали ценны. –
Я вижу вашу точку зрения, я имел в виду, что я хотел бы иметь возможность группировать записи на самом высоком уровне, независимо от того, считаю ли я сотрудников или перечисляю их, причем целью является их объединение на заданном уровне. Я только что решил проблему несколько минут назад, используя рекурсивный CTE, который был именно тем, что я искал. – gdoucette