ホーム - データベース - サブクエリー

サブクエリー

SELECT文やUPDATE文、DELETE文で使用するWHERE句では条件内に別のSELECT文を指定することができます。このようにクエリー内で呼び出されるクエリーをサブクエリー(副問合せ)といいます。例えば、

  WHERE 売上伝票明細データ.商品コード
    IN (SELECT 商品コード FROM 商品マスタ)
				
と記述すると商品マスタに登録されている商品(すなわち現行取り扱い商品)の商品売上データが検索できます。また逆に、
  WHERE NOT (売上伝票明細データ.商品コード
    IN (SELECT 商品コード FROM 商品マスタ))
				
と記述すると商品マスタに登録されていない商品(すなわち現行取り扱いのない商品)の商品売上データが検索できます。

サブクエリーは便利ですが大変負荷の大きい処理ですので、必要がない場合は使わないようにしましょう。例えば、
  SELECT 伝票No, 商品コード, 単価 FROM 売上伝票明細データ
  WHERE 商品コード
    IN (SELECT 商品コード FROM 商品マスタ WHERE 単価 > 50);
  				
という形でサブクエリーを使った場合と、
  SELECT 売上伝票明細データ.伝票No, 売上伝票明細データ.商品コード
    , 売上伝票明細データ.単価
  FROM 売上伝票明細データ INNER JOIN 商品マスタ 
    ON 売上伝票明細データ.商品コード = 商品マスタ.商品コード
  WHERE 商品マスタ.単価 > 50;
  				
という形でサブクエリーを使わなかった場合とでは全く同じ結果が得られますが、サブクエリーでは負荷が掛かりますので、サブクエリーはサブクエリーでしか得られない検索結果が必要な時のみ使用するようにしましょう。