Выжигание клетки мозга ... должен быть простой способ сделать это.
Я унаследовал следующие таблицы:
approval_path
approval_path_steps
applications
application_roles
requests
role_approvals
Пользователь requests
и application role
для application
, который должен пройти через approval path
, этапы которого определены вapproval_path_steps
.История утверждений для каждого шага пути утверждения хранится в role_approvals
.Итак:
approval_path:
-> (p)approval_path_id
|
-------------------------
|
approval_path_steps: |
(p)approval_path_id --|
--> (p)sequence_nbr |
| approver |
| |
| |
| applications: |
| -> (p)application_id |
| | approval_path_id --
| |
| -------------------------
| |
| application_roles: |
| -> (p)role_id |
| | application_id ---
| |
| -------------------------
| |
| requests: |
| -> (p)request_nbr |
| | role_id ---
| | requestor
| |
| -------------------------
| |
| role_approvals: |
| (p)request_nbr ---
---- (p)sequence_nbr (NOT ACTUALLY KEYED!!! ENTERED MANUALLY!!)
approver
status
, где (p)
обозначает первичный ключ.Поля, не имеющие отношения к делу, были опущены.(кстати, это был не мой дизайн)
Проблема: Шаги пути утверждения со временем изменились для данного пути утверждения;шаги были добавлены, удалены или изменены от одного утверждающего к другому.Таким образом, approval_path_steps
, которые фактически были приняты для запроса, не соответствуют approval_path_steps
, которые в настоящее время определены для запрошенной роли approval_path
.
Что мне нужно: Мне нужно запросить таблицу role_approvals
таким образом, чтобы я мог перечислить различные пути, которые были использованы .Итак:
role_approvals
--------------
1000 role1 1 manager approved
1000 role1 2 hr_mgr approved
1000 role1 3 app_owner approved
1001 role1 1 manager approved
1001 role1 2 hr_mgr approved
1001 role1 3 app_owner approved
1002 role1 1 app_owner approved
1002 role1 2 manager approved
Результаты, которые я хочу :
id seq_nbr approver
-- ------- --------
1 1 manager
1 2 hr_mgr
1 3 app_owner
2 1 app_owner
2 2 manager
, где 'id' может быть вычислен каким-либо идентифицирующим образом, неважно, как определить это уникальное утверждениеПуть, который был взят.
Есть идеи?
Заранее спасибо!Джеймс