バックグラウンド
これは、レポートに使用するいくつかのビューを作成するためのものです。
場所のテーブルがあり、キーフィールドは「場所」と「親」です。
これらの2つのフィールドが作成する構造は、レベルごとに、会社名->キャンパス名->建物名->フロア名->部屋名のラインに沿っています。この場合、会社名は変わりませんが、キャンパス名は変わりません。
ロケーションの構造は、通常、次のようになります。
+-----------+
| Org. Name |
+-----+-----+
|
+-----v-----+
+--------------------+|Campus Name|+---+--+-------------+
| +--+--------+ | |
| | | |
| | | |
+--+-----+ +------+-+ +--+----+ +---+---+
+--+| BLDG-01|+--+ | BLDG-02| |BLDG-03| |Grounds|
| +--------+ | +--------+ +-------+ +-------+
+-+------+ +-----+--+
|Floor-01| |Basement+-------+
+-+------+ +--------+ |
| |
| |
| +----------+ +-------+--+
+-+Room 1-001| |Room B-002|
+----------+ +----------+
すべての場所は、親の場所(最終的には組織名)にリンクします。現在、組織とキャンパスは1つだけです。
ゴール
- 「ビルディング」レベルで、特定の場所の下にあるすべての場所をクエリできるようにしたいと思います。これは、特定の建物内の任意の場所で実行された作業指示の数などを返すことができるようにするためです。
- どのサブロケーションがどの建物に属しているかを特定できるようにしたいと思います。基本的には逆です。私は建物のレベルの下の任意のレベルから行き、建物が何であるかまで遡りたいです。
- これを視野に入れて欲しい。つまり、「建物」レベルのすべての項目について、左側の列に建物、右側の列にその建物の下にある可能性のあるすべての場所をリストした表が必要です。このようにして、どの場所がどの建物の一部であるかを見つけるためにいつでもクエリを実行できるリストを作成します。
試みとそれを正しく行う
私はひどく構築されたビュー、UNIONクエリなどを使用してこれを実行しようとしました。これらはすべて悪い考えのように思えました。Oracleが「CONNECT BY」を介してこのためのメカニズムを持っていることを知っています。どうやって使うのかよくわからない。
NULL
彼らの親ですか?「建物レベル」をどのように特定しますか?