下面是一個查詢,它爲員工返回主管鏈,但它使用了一堆嵌套的SELECT語句。 我想知道這個查詢是否可以被重構爲更有效率。該查詢適用於3級管理授權員工參加培訓課程的應用程序。目前我們需要3個級別的批准,但是這可能會更改爲4個或更多。優化Oracle SQL查詢
SELECT badge as employee,
supervisor_badge as boss1,
(select supervisor_badge FROM hr_data level2 WHERE badge = level1.supervisor_badge) as boss2
(select supervisor_badge FROM hr_data level3 WHERE badge =
(select supervisor_badge FROM hr_data level2 WHERE badge = level1.supervisor_badge)) as boss3
FROM hr_data level1 WHERE BADGE = '123456';
徽章=僱員的ID
supervisor_badge =
博特字段是hr_data表員工的主管的徽章
badge supervisor_badge
123456 111111
111111 454545
454545 332211
輸出
employee boss1 boss2 boss3
123456 111111 454545 332211
你想讓它運行得更快嗎?還是希望它更加動態?所以你的關卡可以增長而不需要改變select語句? – Niklas 2011-04-21 17:27:03
我覺得很容易維護。申請專家可能會要求我有5個級別的批准。下面的Mikes答案可以很容易地做到這一點。 – jeff 2011-04-21 18:36:52