情報処理技術者試験の午前問題対策のホームページです。
趣 旨 

当ホームページのアクセス数No.1の『SQL講座』です。
マイクロソフトのAccessというデータベースソフトを利用して、10回の講義形式で、SQLを学んでいきます。

初級シスアドから目指すSQLというコンセプトのもと、なるべく分かりやすく、かつ、注意すべき点などを随所に盛り込みながら、解説していきます。

SQL講座のTopへ戻る

MENU
第9時限目:副問合わせ

MS-AccessでSQL
基本SELECT文
関係関数指定
集合関数指定
GROUP BY と HAVING
並べ換え
表の結合
挿入・更新・削除
副問合せ
練習問題






副問合せは、1つの SELECT 文で得られた結果をさらに利用して、
次のSELECT文でデータを求めます。


■単一の列についての値を返すような問合せ  


/* ch09-1 */ 

SELECT 商品名 , 単価 FROM 商品
WHERE 単価 =
      (SELECT 単価
       FROM 商品
       WHERE 商品名 = 'ナイトワイン');


 テーブル「商品」から、単価が'ナイトワイン'と等しい商品の商品名と単価を取り出します。

< 実行結果ch09-1 >



■集合関数を使って


/* ch09-2 */ 

SELECT 商品名 , 単価 FROM 商品
WHERE 単価 =
      (SELECT MAX(単価)
       FROM 商品);


 テーブル「商品」で、一番単価が高い商品名と単価を取り出します。

< 実行結果ch09-2 >



■複数の値を返すような問合せ

 副問い合わせの結果が複数の場合、メインの問い合わせは IN 演算子を用い、
 述語として整合性が取れている必要があります。


/* ch09-3 */ 

SELECT * FROM 商品 WHERE 商品コード IN
      (SELECT DISTINCT 商品コード
       FROM 受注明細);


 テーブル「受注明細」に出てくる商品コードの商品について読みます。

 DISTINCT述語が付いているのは、同じ商品コードが何度も読み出されるのを避けるためです。

< 実行結果ch09-3 >

 


/* ch09-4 */ 

SELECT * FROM 商品 WHERE 商品コード NOT IN
      (SELECT 商品コード
       FROM 受注明細);


 テーブル「受注明細」にない、つまり売れていない商品が選択されます。

<注意>
 ch09-4 を実行する前に受注明細の ピュアデミグラスソースのレコードを削除してください。

< 実行結果ch09-4 >







第8時限目へ  第10時限目へ


このページのTopへ戻る
インフォメーション



© 2005 情報処理技術者試験対策 All rights reserved.
[PR] 情報セキュリティアドミニストレータ試験対策セキュアド試験午前問題徹底攻略小さな幸せ特訓PDCA式で学ぼう情報セキュリティ情報処理技術者試験 午前問題攻略
テクニカルエンジニア(情報セキュリティ)試験対策転職 就職ネイティブ音声日常英会話