배경
이는보고에 사용할 일부보기를 구성하기위한 것입니다.
위치 테이블이 있으며 핵심 필드는 "location"및 "parent" 입니다.
이 두 필드가 레벨별로 작성되는 구조는 회사 이름-> 캠퍼스 이름-> 건물 이름-> 층 이름-> 회의실 이름의 선을 따릅니다. 이 경우 회사 이름은 동일하게 유지되고 캠퍼스 이름은 동일하게 유지됩니다.
위치의 구조는 일반적으로 다음과 같습니다.
+-----------+
| Org. Name |
+-----+-----+
|
+-----v-----+
+--------------------+|Campus Name|+---+--+-------------+
| +--+--------+ | |
| | | |
| | | |
+--+-----+ +------+-+ +--+----+ +---+---+
+--+| BLDG-01|+--+ | BLDG-02| |BLDG-03| |Grounds|
| +--------+ | +--------+ +-------+ +-------+
+-+------+ +-----+--+
|Floor-01| |Basement+-------+
+-+------+ +--------+ |
| |
| |
| +----------+ +-------+--+
+-+Room 1-001| |Room B-002|
+----------+ +----------+
모든 위치는 조직 위치 인 상위 위치로 다시 연결됩니다. 현재 하나의 조직과 하나의 캠퍼스 만 있습니다.
목표
- "건물"수준에서 특정 위치 아래의 모든 위치를 쿼리하고 싶습니다. 이것은 주어진 건물 내 어느 위치에서든 얼마나 많은 작업 지시가 수행되었는지와 같은 것들을 반환 할 수 있도록하기위한 것입니다.
- 어느 하위 위치가 어떤 건물에 속하는지 결정할 수 있기를 원합니다 . 본질적으로 반대입니다. 건물 수준 아래의 모든 수준에서 건물의 상태로 돌아가고 싶습니다.
- 나는 이것을보기 원한다 . 즉, "건물"레벨의 모든 품목에 대해 왼쪽 열에 건물을 나열하고 오른쪽 열에있는 건물 아래 가능한 모든 위치를 나열하는 표를 갖고 싶습니다. 이렇게하면 언제든지 어떤 건물의 일부 위치를 찾기 위해 쿼리 할 수있는 목록을 얻을 수 있습니다.
시도하고 바르게하기
나는 끔찍하게 구성된 뷰, UNION 쿼리 등을 통해이 작업을 시도했습니다. 모두 나쁜 생각처럼 보입니다. Oracle은 "CONNECT BY"를 통해이를위한 메커니즘을 보유하고 있음을 알고 있습니다. 어떻게 사용하는지 잘 모르겠습니다.
NULL
입니까? "건물 수준"을 어떻게 식별합니까?