พื้นหลัง
นี่คือการสร้างมุมมองบางอย่างที่เราจะใช้สำหรับการรายงาน
ฉันมีตารางของสถานที่คีย์ฟิลด์เป็น "สถานที่" และ "ผู้ปกครอง"
โครงสร้างที่สองฟิลด์นี้สร้างระดับที่ชาญฉลาดจะอยู่ในแนวเดียวกันกับชื่อ บริษัท -> ชื่อวิทยาเขต -> ชื่ออาคาร -> ชื่อชั้น -> ชื่อห้อง ชื่อ บริษัท ยังคงเหมือนเดิมและชื่อวิทยาเขตจะยังคงเหมือนเดิมในกรณีนี้
โครงสร้างของสถานที่โดยทั่วไปมีลักษณะดังนี้:
+-----------+
| Org. Name |
+-----+-----+
|
+-----v-----+
+--------------------+|Campus Name|+---+--+-------------+
| +--+--------+ | |
| | | |
| | | |
+--+-----+ +------+-+ +--+----+ +---+---+
+--+| BLDG-01|+--+ | BLDG-02| |BLDG-03| |Grounds|
| +--------+ | +--------+ +-------+ +-------+
+-+------+ +-----+--+
|Floor-01| |Basement+-------+
+-+------+ +--------+ |
| |
| |
| +----------+ +-------+--+
+-+Room 1-001| |Room B-002|
+----------+ +----------+
ทุกสถานที่เชื่อมโยงกลับไปยังตำแหน่งหลักซึ่งเป็นชื่อองค์กรในที่สุด ปัจจุบันมีเพียงหนึ่งองค์กรและหนึ่งวิทยาเขต
เป้าหมาย
- ฉันต้องการที่จะสามารถค้นหาสถานที่ทั้งหมดที่อยู่ภายใต้สถานที่ที่กำหนดในระดับ "อาคาร" นี่คือดังนั้นฉันสามารถคืนสิ่งต่าง ๆ เช่นจำนวน workorders ได้ดำเนินการสำหรับตำแหน่งใด ๆ ภายในอาคารที่กำหนด
- ฉันต้องการที่จะระบุตำแหน่งย่อยที่เป็นของอาคารใด โดยพื้นฐานแล้วตรงกันข้าม ฉันอยากจะไปจากทุกระดับที่อยู่ใต้ระดับอาคารและติดตามกลับไปที่สิ่งที่เป็นอาคาร
- ฉันต้องการนี้จะเป็นในมุมมอง ซึ่งหมายความว่าฉันต้องการให้มีตารางสำหรับทุกรายการในระดับ "อาคาร" แสดงรายการสิ่งปลูกสร้างในคอลัมน์ซ้ายมือและตำแหน่งที่เป็นไปได้ทั้งหมดภายใต้อาคารนั้นในคอลัมน์ทางขวา วิธีนี้ฉันจะมีรายการที่ฉันสามารถสอบถามได้ตลอดเวลาเพื่อค้นหาว่าสถานที่ใดเป็นส่วนหนึ่งของสิ่งปลูกสร้าง
พยายามและทำมันถูกต้อง
ฉันพยายามทำสิ่งนี้ผ่านมุมมองที่สร้างขึ้นอย่างน่ากลัวคำถามของ UNION ฯลฯ ซึ่งทั้งหมดดูเหมือนจะเป็นความคิดที่ไม่ดี ฉันรู้ว่า Oracle มีกลไกสำหรับสิ่งนี้ผ่านทาง "CONNECT BY"; ฉันไม่แน่ใจว่าจะใช้ประโยชน์จากมันอย่างไร
NULL
สำหรับพวกเขา? คุณจะระบุ "ระดับอาคาร" ได้อย่างไร