fundo
Isso é para a construção de algumas visualizações que usaremos para gerar relatórios.
Eu tenho uma tabela de locais, os campos principais sendo "local" e "pai" .
A estrutura que esses dois campos criam, em nível de nível, segue as linhas de Nome da Empresa -> Nome do Campus -> Nome do Edifício -> Nome do Piso -> Nome da Sala. O nome da empresa permanece o mesmo e o nome do campus permanece o mesmo neste caso.
A estrutura dos locais geralmente se parece com isso:
+-----------+
| Org. Name |
+-----+-----+
|
+-----v-----+
+--------------------+|Campus Name|+---+--+-------------+
| +--+--------+ | |
| | | |
| | | |
+--+-----+ +------+-+ +--+----+ +---+---+
+--+| BLDG-01|+--+ | BLDG-02| |BLDG-03| |Grounds|
| +--------+ | +--------+ +-------+ +-------+
+-+------+ +-----+--+
|Floor-01| |Basement+-------+
+-+------+ +--------+ |
| |
| |
| +----------+ +-------+--+
+-+Room 1-001| |Room B-002|
+----------+ +----------+
Todo local é vinculado ao local principal, que é o nome da organização. Atualmente, existe apenas uma organização e um campus.
Metas
- Eu gostaria de poder consultar todos os locais abaixo de qualquer local no nível "Edifício". Isso é para que eu possa retornar coisas como quantas ordens de trabalho foram executadas para qualquer local dentro de um determinado edifício.
- Eu gostaria de poder determinar qual sub-localização pertence a qual edifício . Essencialmente o contrário; Eu gostaria de ir de qualquer nível abaixo do nível do edifício e rastrear até o que é o edifício.
- Eu gostaria que isso fosse visto . Isso significa que eu gostaria de ter uma tabela que, para cada item no nível "edifício", liste o edifício na coluna da esquerda e todos os locais possíveis SOB esse edifício na coluna da direita. Dessa forma, eu teria uma lista que eu poderia consultar a qualquer momento para descobrir quais locais fazem parte de qual edifício.
Tentativas e fazer certo
Tentei fazer isso através de visões horrivelmente construídas, consultas UNION etc. - que pareciam uma péssima idéia. Eu sei que a Oracle possui um mecanismo para isso através de "CONNECT BY"; Só não tenho certeza de como usá-lo.
NULL
para eles? Como você identifica um "nível de construção"?