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