Фон
Це для побудови деяких поглядів, які ми будемо використовувати для звітності.
У мене є таблиця місць розташування, ключові поля - "місцезнаходження" та "батьків" .
Структура, яку ці два поля створюють, рівняється, узгоджується з назвою компанії -> Назва кампусу -> Назва будівлі -> Назва поверху -> Назва кімнати. Назва компанії залишається такою ж, а назва кампусу залишається такою ж.
Структура локацій зазвичай виглядає так:
+-----------+
| 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
для них батьком ? Як ви визначаєте "будівельний рівень"?