データ クエリの SELECT ステートメント
さまざまな SELECT ステートメントを使用して、情報を照会できます。 ステートメントは、基本的なステートメントにすることも、クエリから返される結果セットを絞り込むために制限を厳しくすることもできます。
次の例は、データの照会に使用される基本的な SELECT ステートメントです。
SELECT * FROM Class
このステートメントは、指定したクラスとそのサブクラスのインスタンスを返します。 クラスのすべてのシステム プロパティとユーザー定義プロパティが対象になります。 システム プロパティが特定のクエリに該当しない場合は、NULL が含まれます。
クエリの実行に伴うオーバーヘッドが大きすぎる場合や、プロパティのサブセットのみに関心がある場合は、いくつかの手法を使用して、結果セットの取得に必要な帯域幅を減らすことができます。 まず、クエリのアスタリスクを目的のプロパティに置き換えることができます。
次の例は、特定のプロパティに対してクエリを実行する方法を示しています。
SELECT property_1, property_2, property_3 FROM class
結果セットには、すべてのシステム プロパティと指定した非システム プロパティが含まれます。
クエリの結果セットの範囲を絞り込むもう 1 つの手法は、__CLASS システム プロパティを使用することです。 既定では、指定したクラスとそのサブクラスのすべてのインスタンスがクエリから返されます。 __CLASS システム プロパティを使用すると、指定したクラスのインスタンスのみを要求し、サブクラスを除外できます。
次の例は、WHERE 句で __CLASS システム プロパティを使用する方法を示しています。
SELECT * FROM Device WHERE __CLASS = "Device"
__CLASS システム プロパティを使用して、結果セットを特定のサブクラスのインスタンスに制限することもできます。
次の例は、結果セットを特定のサブクラスのインスタンスに制限する方法を示しています。
SELECT * FROM Device WHERE __CLASS = "Modem" OR __CLASS = "Keyboard"
注意
埋め込みオブジェクトの無効なパスを使用してクエリを作成した場合、エラーは返されず、結果も一切返されません。
次の例では、P_Uint32 プロパティが "70011" と等しい埋め込みオブジェクト EmbedObj を含む MainClass のインスタンスが存在する場合に、MainClass のインスタンスが返されます。
SELECT * FROM MainClass WHERE EmbedObj.P_Uint32 = 70011
次の例で、MainClass のインスタンス内の埋め込みオブジェクト EmbedObj にプロパティ INVALID がない場合、結果が返されず、エラーも返されません。
SELECT * FROM MainClass WHERE StrongEmbedObj.INVALID = 70011