演習30 「Msqry SQL」 の解説 その2


さらに続けて、'Msqry32' を用いて、Access で作成した テーブルやクエリ
の処理を行う。(データソースは、例として前頁と同じ acctest2.mdb である)


(10) グループ化 (住所フィールドでグループ化を行う)
     select 住所, count(*) from テーブル1 group by 住所;

     (解説) count(*) ... レコードの件数(行数) をカウントする集合関数
          group by ... 指定したフィールド(列)の中で同じ値を持つ行を
                       グループ化する。select に続く項目には ここで
                       指定したフィールドや count(*) 等を記述する。

     (注意) 今まで SQL文 の記述において、最後を意味するセミコロン(;)
          を付けていたが、'Msqry32' で集合関数 count(*) 等を扱う時
          は、セミコロンを省略すると、次図左のようにフィールド列に
          具体的な名前が自動的に付くので、今後そのようにする場合が
          ある。

        
(11) グループ化 (union クエリで最下行に合計を表記する) select 住所, count(*) from テーブル1 group by 住所 union all select '人数合計', count(*) from テーブル1 (解説) union ... 前後の select 文の結果の和集合をとる。       
(12) グループ化 (having で条件をつけて絞り込む) select 住所, count(*) from テーブル1 group by 住所 having count(*) >= 2 (解説) having ... グループ化した結果から条件を付けて抽出する。       
(13) 結合 (二つのテーブルを結合して一つのテーブルを作る) select テーブル1.ID, テーブル1.番号, テーブル1.氏名, クエリ2.合計, クエリ2.判定 from テーブル1 inner join クエリ2 on テーブル1.ID = クエリ2.ID (解説) 基本形は、    select * from テーブルA inner join テーブルB    on テーブルA.列a = テーブルB.列a    inner join ... 前後のテーブルを結合する。    on □ = □ ... 各々のテーブルで値が等しい共通する列        (主キー) を指定して関連付ける。       
(14) 結合 (三つのテーブルを結合して一つのテーブルを作る) select テーブル1.ID, テーブル1.番号, テーブル1.氏名, クエリ2.合計, クエリ2.判定, テーブル3.結果 from (テーブル1 inner join クエリ2 on テーブル1.ID = クエリ2.ID) inner join テーブル3 on クエリ2.判定 = テーブル3.判定 (解説) 基本形は、    select * from    (テーブルA inner join テーブルB on テーブルA.列a = テーブルB.列a)    inner join テーブルC on テーブルB.列b = テーブルC.列b    括弧でくくられた部分の テーブルA とテーブルB の結合を一つの    テーブルと考え、新たにテーブルC を結合している。       
SQL その1 へ戻る. SQL その3 へ移る.                            back top