演習30 「Msqry SQL」 の解説 その3
まず Access で、次の二つの 選択クエリ 4, 6 を作成しておく。
   
 
(15) グループ化の応用1 (count, avg, group by, having)
     select 住所,count(合計),avg(合計)
     from クエリ6
     group by 住所
     having count(合計) >= 2
     (解説) count( ) ... 合計フィールドの該当の件数をカウント
          avg( )   ... 合計フィールドの該当の平均
          group by ... 住所フィールドでグループ化
          having count(合計) >= 2 ... 件数が 2以上 を抽出
   
(16) グループ化の応用2 (二つのクエリを合体)
     select クエリ6.住所,max(クエリ4.合計)
     from クエリ4,クエリ6
     where クエリ4.氏名=クエリ6.氏名
     group by クエリ6.住所
     (解説) max ... 最大値を検索
          where □=□ ... 共通フィールドで関係付け
          group by でグループ化した後、二つのクエリ
          から該当項目を検索、計算し表示する。
   
(17) サブクエリへの拡張1 (select文の中にもう一つ select文を入れる)
     select * from テーブル1
     where 番号 = any
       (select 番号 from テーブル1 where 住所 like '薩%' or 所属='凡人')
     order by 番号 desc
     (解説) 括弧の中の select文の解釈は、
          住所フィールドで '薩' の付く文字、または '凡人' であるものを
          テーブル1の番号フィールドの値として抽出する。
          
          それを where の条件として、order by で番号の降順でテーブル1
          からレコードを検索し、全てのフィールドを表示する。
     (注意) where文には必ず比較演算子(=, > など)と組み合わせて記述する。
          = any ( ) ... 括弧内のいずれかと等しければ真
                        in ( ) としても同意
          < all ( ) ... 括弧内のすべてより小さければ真、など。
          サブクエリは、select, from, where, having に続く項目として
          記述することができる。
   
(18) サブクエリへの拡張2 (サブクエリのテーブル1 と クエリ4 を合体)
     select テーブル1.番号,テーブル1.氏名,テーブル1.住所,クエリ4.結果
     from テーブル1,クエリ4
     where
     テーブル1.ID = クエリ4.ID
        and
     テーブル1.番号 in
       (select テーブル1.番号 from テーブル1
        where テーブル1.住所 like '薩%' or テーブル1.所属='凡人')
     order by テーブル1.番号 desc
     (解説) まず、where に続く テーブル1.ID = クエリ4.ID で、共通の
          IDフィールドを指定して、テーブル1 と クエリ4 を関連付け
          ている。次の and に続く括弧内がサブクエリ。
          テーブル1 の住所フィールドで '薩'の字がつくか、所属フィ
          ールドで '凡人'のあるものを検索し、テーブル1 から該当の
          レコードのフィールドを表示する。
   
(19) サブクエリへの拡張3 (テーブル1,クエリ4,クエリ6 を二つのサブクエリで合体)
     select テーブル1.番号,テーブル1.氏名,テーブル1.住所,クエリ4.結果,クエリ6.合計
     from テーブル1,クエリ6,
       (select * from クエリ4 where クエリ4.結果='良')
     where
     テーブル1.ID = クエリ4.ID
        and
     クエリ4.番号 = クエリ6.番号
        and
     テーブル1.番号 in
       (select テーブル1.番号 from テーブル1
        where テーブル1.住所 like '薩%' or テーブル1.所属='凡人')
     order by クエリ4.合計 desc
     (解説) 複数のテーブル・クエリにおいて、サブクエリを行っている。
          where に続く and の前後で、共通のフィールドを指定して、
          関連付けをしている。 from の項目で、テーブル1,クエリ6,
          および、クエリ4 の結果フィールドで '良' であるものから
          検索し、select に続く該当のフィールドを表示する。
   
 SQL その2 へ戻る.                            back top