ओरेकल 11 जी (आर 2) डेटाबेस का उपयोग करके दृश्य बनाएं, हमें रिपोर्ट बनाने की ज़रूरत है जो दिखाती है कि लीडरशिप कमेटी किस व्यक्ति की रिपोर्टिंग संरचना से संबंधित है।ओरेकल 11 जी कनेक्ट और एकाधिक टेबल
उच्च स्तर पर, हम टेबल बोर्ड_मेम्बर में कर्मचारी आईडी का पता लगाकर बोर्ड पर किसी व्यक्ति की उपस्थिति निर्धारित करते हैं।
बोर्ड_मेम्बर टेबल में एक स्थिति आईडी है जिसका उपयोग बोर्ड_पॉजिशन तक पहुंचने के लिए किया जा सकता है, और वहां से हम यह निर्धारित कर सकते हैं कि स्थिति नेतृत्व समिति पर है या नहीं। (नीचे नमूने।)
नेतृत्व समिति पर मौजूद किसी भी कर्मचारी के लिए, उसकी आईडी BOARD_LEAD का प्रतिनिधित्व करेगी।
किसी भी अन्य कर्मचारी के लिए, जब तक लीडरशिप कमेटी के सदस्य की पहचान नहीं की जाती है, तब तक रिपोर्ट_to मूल्य का पुनरावृत्ति किया जाता है, और उस व्यक्ति की आईडी BOARD_LEAD होगी।
हमारे शीर्ष-स्तरीय कर्मचारियों के पास अधिक सामान्य न्यूल के बजाय, अपने स्वयं के empl_id के बराबर रिपोर्ट है।
उम्मीद है कि यह प्रदर्शित करने के लिए, मैंने नमूना तालिकाओं, नमूना डेटा और नमूना वांछित आउटपुट सेट अप किया है।
मैं समझने की कोशिश कर रहा हूं कि एक दृश्य कैसे बनाएं जो पूर्णकालिक समतुल्यता और अन्य रिपोर्टिंग आवश्यकताओं के लिए ऐसी जानकारी प्रदान करेगा। मुझे आश्वस्त है कि कनेक्ट में शामिल होगा, लेकिन मुझे ओरेकल दस्तावेज भ्रमित लगता है और मुझे कोई उदाहरण नहीं मिला है जिसमें इस तरह के कई टेबल शामिल हैं। (मुझे डर है कि उदाहरण की इस कमी के लिए एक अच्छा कारण है।)
क्या इंटरमीडिएट टेबल की बजाय ओरेकल 11 जी (आर 2 नहीं) में ऐसा दृश्य लिखना भी संभव है जिसे प्रत्येक स्थिति में बदलाव के साथ अपडेट किया जाना चाहिए?
Create table board_positions /* If board_position = 'LDRSHPCOMM' this is a top position */
(member_id varchar(6),board_position varchar(18));
Create table board_members
(empl_id varchar(6), member_id varchar(6));
Create table emp
(empl_id varchar(6),ename varchar(32),report_to varchar(6));
Insert into board_positions values('CEO','LDRSHPCOMM');
Insert into board_positions Values('COO','LDRSHPCOMM');
Insert into board_positions Values('CFO','LDRSHPCOMM');
Insert into board_positions Values('CIO','LDRSHPCOMM');
Insert into board_positions values('WANABE','NEWBIE');
Insert into emp ('TOPDOG','Big Guy','TOPDOG');
Insert into emp ('WALLET','Money Bags','TOPDOG');
Insert into emp ('OPSGUY','Meikut Work','TOPDOG');
Insert into emp ('INFGUY','Comp U Turk','TOPDOG');
Insert into emp ('HITECH','Number 2','INFGUY');
Insert into emp ('LOTECH','Number 3','HITECH');
Insert into emp ('PROGMR','Nameless Blameless','LOTECH');
insert into emp ('FLUNKY','Ida Dunnit','PROGMR');
Insert into board_members ('TOPDOG','CEO');
Insert into board_members ('WALLET','CFO');
Insert into board_members ('OPSGUY','COO');
Insert into board_members ('INFGUY','CIO');
Insert into board_members ('HITECH','WANABE'); /* Board position not on the leadership committee */
की तरह कुछ का उपयोग करना: (लेकिन मुझे पता है कि इस से है कि यह करने के लिए अधिक!)
वांछित उत्पादन उदाहरण
CREATE VIEW LEADER_VIEW AS
WITH T1 AS (SELECT e.empl_id, (something) as board_lead
, (something) as board_lead_pos
FROM emp e
LEFT OUTER JOIN board_members bm
ON bm.empl_id = e.empl_id
LEFT OUTER JOIN board_positions bp
on bp.member_id = bm.member_id
...
CONNECT BY PRIOR empl_id = report_to
START WITH empl_id = report_to
)
SELECT * FROM T1
। । ।
TOPDOG TOPDOG CEO (Because self is on LDRSHPCOMM)
WALLET WALLET CFO (Because self is on LDRSHPCOMM)
OPSGUY OPSGUY COO (Because self is on LDRSHPCOMM)
INFGUY INFGUY CIO (Because self is on LDRSHPCOMM)
HITECH INFGUY CIO (Because REPORTTO is on LDRSHPCOMM)
LOTECH INFGUY CIO (Because REPORTTO->REPORTTO is on LDRSHPCOMM)
PROGMR INFGUY CIO (REPORTTO->REPORTTO->REPORTTO is on LDRSHPCOMM)
FLUNKY INFGUY CIO (You know by now.)