SQLとは
SQLではSELECT文のWHERE句の探索条件にまたSELECT文を入れることができます。 この入れ子になっているSQL文のことを入れ子型質問といいます。
商品

納品

顧客

図2

納品

顧客

図2
SELECT 顧客番号, 顧客名
FROM 顧客
WHERE 顧客番号 IN
(SELECT 顧客番号
FROM 納品
WHERE 商品番号='A1')

上記の例では「商品番号A1の商品を納品している顧客の顧客番号と顧客名」を求めています。 ここで、INはSQLで導入され、リレーショナル代数にはなかった比較演算子であり、 Xをリスト(x1, x2, ・・・, xn)とするとき、x IN Xは x=x1 OR x=x2 OR ・・・ OR x=xnと等価な述語を表します。 まず以下の入れ子型質問を計算します。
SELECT 顧客番号
FROM 納品
WHERE 商品番号='A1'

そして、元の質問文は以下のような単純質問に帰着します。
SELECT 顧客番号, 顧客名
FROM 顧客
WHERE 顧客番号