燃燒出一個大腦細胞...必須有一個簡單的方法來做到這一點。Oracle查詢提取不同的路線
我繼承下表:
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
其中 '身份證' 可以在一些確定的方式來計算,它並不怎麼回事,以確定採取了獨特的審批路徑。
任何想法?
在此先感謝! James
這個查詢整個上午變暗了燈光(沒有意外)。要試着讓它在一夜之間運行,看看我回來了什麼,我會盡快回復你。謝謝! – 2010-10-11 20:58:16
我一直無法成功完成這個查詢......大部分我已經能夠讓它運行14個小時,但是當我早晨收拾我的筆記本電腦時,我不得不殺掉它。將其標記爲正確的答案,假設它將使用較小的一組數據。謝謝您的幫助! – 2010-10-13 14:28:54