比較演算子に続くサブクエリ (=、>、<、>=、<=、!=、<>、!>、!<) は、比較と呼ばれます。オプティマイザは、サブクエリが次のような場合に、これらのサブクエリをジョインに変換します。
メイン・クエリのローごとに値を 1 つずつ返す
GROUP BY 句を含んでいない
キーワード DISTINCT を含んでいない
UNION クエリではない
集計クエリではない
「Suresh の製品がいつ注文され、どの担当者が注文を受けたか」という要求をサブクエリで表現したとします。
SELECT OrderDate, SalesRepresentative FROM SalesOrders WHERE CustomerID = ( SELECT ID FROM Customers WHERE GivenName = 'Suresh' ); |
このクエリは基準を満たすので、ジョインを使用するクエリに変換できます。
SELECT OrderDate, SalesRepresentative FROM SalesOrders, Customers WHERE CustomerID=Customers.ID AND ( Surname = 'Clarke' OR GivenName = 'Suresh' ); |
しかし、「在庫数が平均注文数の 2 倍よりも少ない製品を検索する」という要求はジョインに変換できません。これは、サブクエリに集計関数 AVG が含まれているためです。
SELECT Name, Description FROM Products WHERE Quantity < 2 * ( SELECT AVG( Quantity ) FROM SalesOrderItems ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |