Antecedentes
Esto es para la construcción de algunas vistas que usaremos para generar informes.
Tengo una tabla de ubicaciones, los campos clave son "ubicación" y "padre" .
La estructura que crean estos dos campos, en términos de nivel, está en la línea del Nombre de la empresa -> Nombre del campus -> Nombre del edificio -> Nombre del piso -> Nombre de la sala. El nombre de la empresa sigue siendo el mismo y el nombre del campus sigue siendo el mismo en este caso.
La estructura de ubicaciones generalmente se ve así:
+-----------+
| Org. Name |
+-----+-----+
|
+-----v-----+
+--------------------+|Campus Name|+---+--+-------------+
| +--+--------+ | |
| | | |
| | | |
+--+-----+ +------+-+ +--+----+ +---+---+
+--+| BLDG-01|+--+ | BLDG-02| |BLDG-03| |Grounds|
| +--------+ | +--------+ +-------+ +-------+
+-+------+ +-----+--+
|Floor-01| |Basement+-------+
+-+------+ +--------+ |
| |
| |
| +----------+ +-------+--+
+-+Room 1-001| |Room B-002|
+----------+ +----------+
Cada ubicación se vincula a su ubicación principal, que en última instancia es el nombre de la organización. Actualmente, solo hay una organización y un campus.
Metas
- Me gustaría poder consultar todas las ubicaciones debajo de cualquier ubicación dada en el nivel "Edificio". Esto es para que pueda devolver cosas como cuántos pedidos de trabajo se han realizado para cualquier ubicación dentro de un edificio determinado.
- Me gustaría poder determinar qué sububicación pertenece a qué edificio . Esencialmente lo contrario; Me gustaría ir desde cualquier nivel por debajo del nivel del edificio y rastrear hasta donde está el edificio.
- Me gustaría que esto sea en una vista . Eso significa que me gustaría tener una tabla que para cada elemento en el nivel de "edificio", enumere el edificio en la columna de la izquierda y todas las ubicaciones posibles BAJO ese edificio en la columna de la derecha. De esta manera, tendría una lista que podría consultar en cualquier momento para encontrar qué ubicaciones forman parte de cada edificio.
Intentos y hacerlo bien
Intenté hacer esto a través de vistas horriblemente construidas, consultas de UNION, etc., que me han parecido una mala idea. Sé que Oracle posee un mecanismo para esto a través de "CONECTAR POR"; No estoy seguro de cómo usarlo.
NULL
para ellos? ¿Cómo identificas un "nivel de construcción"?