私たちは、一つのSQL文に、もう一つのSQL文を入れることができます。そこで、 WHERE 句又は HAVING 句にもう一つのSQL文を挿入した場合、subqueryの構文ができました。Subquery の用途は何ですか。まず、テーブルの結合に使われます。それから、時にはsubquery が二つのテーブルを結合する唯一の方法になります。
Subquery のプログラミングは次のようになります。
SELECT "フィールド1"
FROM "テーブル1"
WHERE "フィールド2" [比較演算子]
(SELECT "フィールド1"
FROM "テーブル2"
WHERE [条件])
[比較演算子] は =、>、<、>=、<=などの演算子があり、 "LIKE."等のような文字に対する演算子があります。
先ほど SQL の結合について述べられた例:
Store_Information テーブル
| store_name |
Sales |
Date |
| Los Angeles |
$1500 |
Jan-05-1999 |
| San Diego |
$250 |
Jan-07-1999 |
| Los Angeles |
$300 |
Jan-08-1999 |
| Boston |
$700 |
Jan-08-1999 |
Geography テーブル
| region_name |
store_name |
| East |
Boston |
| East |
New York |
| West |
Los Angeles |
| West |
San Diego |
subquery を利用して、西にある店の売上をすべて調べる場合、次のSQLで使えることができます。
SELECT SUM(Sales) FROM Store_Information
WHERE Store_name IN
(SELECT store_name FROM Geography
WHERE region_name = 'West')
の結果ができます。
この例では、二つのテーブルを直接に結合しませんが、西にある店の売上をすべて直接に計算することができます。それは、まず、どんな店が西にあるのかを調べます。それから、それらの店の売上を計算し、合計します。