リレーションシップの検索

ジオデータベース システム テーブルを操作するときの一般的な目的は、特定アイテムに関連するすべてのアイテムを検索することです。この例としては、フィーチャ データセットのコンテンツの検索、トポロジまたはジオメトリック ネットワークに参加するフィーチャクラスの検索、レプリカに含まれるデータセットの検索などが挙げられます。すべてのアイテムとリレーションシップは同じテーブル内に格納されているため、これらすべての場合に対して 1 つのクエリ(と使用されている特定アイテムを判別する文字列リテラル)を使用できます。この検索は、次の手順で実行できます。

以下は、これらすべての手順を組み込んだ SQL クエリです。検索される特定アイテムを変更するには、最初に宣言されている両方の文字列変数を変更します。

--Queries a dbo-schema geodatabase in SQL Server

DECLARE @ORIGIN narchar(max);
DECLARE @ORIGIN_TYPE narchar(max);
SET @ORIGIN = 'Montgomery.Sasha.Landbase';
SET @ORIGIN_TYPE = 'Feature Dataset';

SELECT
 DEST_ITEMS.Name AS "Name"
 DEST_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the origin item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @ORIGIN) AS src_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @ORIGIN_TYPE) AS src_types
 ON src_items.Type = src_types.UUID)

 --Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON src_items.UUID = relationships.OriginID) 

 -- Resolve the names of the destination items.
 INNER JOIN
 dbo.GDB_ITEMS AS dest_items
 ON relationships.DestID = dest_items.UUID)

 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS dest_types
 ON dest_items.Type = dest_types.UUID

フィーチャ データセットの場合、これは ArcCatalog 内のフィーチャ データセットを参照する場合と似たリストを返します。リストには、フィーチャクラス、リレーションシップ クラス、およびトポロジ、ネットワーク データセット、パーセル ファブリックなどのコントローラ データセットが含まれます。また、このリストには、トポロジが使用するダーティ エリア フィーチャクラスなど、ArcCatalog に表示されないデータセットが含まれる場合もあります。

これは、フィーチャ データセット内のデータセットや、トポロジ内のフィーチャクラスなどのリレーションシップに対してうまく機能しますが、特定の関連先アイテムに基づきリレーションシップの元のアイテムを検索しようとする場合は、少し変更する必要があります。この種のリレーションシップ操作を使用して、特定のドメインを使用するデータセットや、レプリカ データセットが属するレプリカ、あるいはフィーチャクラスが参加するコントローラ メンバーシップを検索することができます以下は、前のクエリの修正バージョンです。元のアイテムではなく関連先アイテムを使用して、関連アイテムを検索できるように変更されています。

 --Queries a dbo-schema geodatabase in SQL Server

DECLARE @DEST narchar(max);
DECLARE @DEST_TYPE narchar(max);
SET @DEST = 'Angle';
SET @DEST_TYPE = 'Range Domain';

SELECT
 SRC_ITEMS.Name AS "Name",
 SRC_TYPES.Name AS "Type"
FROM
 -- Get the unique ID of the destination item.
 ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @DEST) AS dest_items
 INNER JOIN
 (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @DEST_TYPE) AS dest_types
 ON dest_items.Type = dest_types.UUID)

 -- Get the UUIDs of related items.
 INNER JOIN
 dbo.GDB_ITEMRELATIONSHIPS AS relationships
 ON dest_items.UUID = relationships.DestID)

 -- Resolve the names of the origin items.
 INNER JOIN
 dbo.GDB_ITEMS AS src_items
 ON relationships.OriginID = src_items.UUID)

 -- Get the types as human-readable strings.
 INNER JOIN
 dbo.GDB_ITEMTYPES AS src_types
 ON src_items.Type = src_types.UUID

Oracle で使用されるシステム テーブルとビューについては、「ジオデータベース システム テーブルの概要」のセクション「ジオデータベース システム テーブルの XML」をご参照ください。


3/6/2012