WHERE 句内のサブクエリは、ロー選択のプロセスの一部として機能します。ローの選択に使用する基準が別のテーブルの結果に依存するときに、WHERE 句内にサブクエリを使用します。
在庫数が平均注文数の 2 倍よりも少ない製品を検索します。
SELECT Name, Description FROM Products WHERE Quantity < 2 * ( SELECT AVG( Quantity ) FROM SalesOrderItems ); |
このクエリは 2 段階で実行されます。まず、注文ごとに要求される品目の平均数を検索します。次に、どの製品の在庫数がその数の 2 倍より少ないかを検索します。
要求される品目の数は、品目のタイプ、顧客、注文ごとに、SalesOrderItems テーブルの Quantity カラムに格納されます。サブクエリは次のようになります。
SELECT AVG( Quantity ) FROM SalesOrderItems; |
これによって SalesOrderItems テーブルの品目の平均数、25.851413 が返されます。
次のクエリは、前述のクエリで抽出した値の 2 倍よりも少ない在庫数の品目の名前とその説明を返します。
SELECT Name, Description FROM Products WHERE Quantity < 2*25.851413; |
サブクエリを使用すると、この 2 つの手順を 1 つのオペレーションにまとめることができます。
WHERE 句内でのサブクエリは、探索条件の一部です。WHERE 句内で使用できる簡単な探索条件については、データのクエリの章で説明します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |