演習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