【1】Accessのファイル「SampleDB4.mdb」を起動します。オブジェクトで「クエリ」を選択後、「Q01Slip」をクリックし、「デザイン」で開きます。
【2】クエリ「Q01Slip」がデザインビューで開きました。
クエリQ01Slipはあらかじめデザインしてあります。必要なテーブルの表示、テーブル同士を結合、フィールドの選択、演算フィールド、並べ替えの設定が完了しています。次は実行結果を見てみましょう。
【3】「データシートビュー」をクリックします。
【4】クエリ「Q01Slip」の実行結果が表示されました。
このような実行結果が出せるSQL文を作るにはどうしたらよいのでしょうか?実はAccessにはSQL文を自動作成してくれる機能があります。
【5】「SQLビュー」をクリックします。
【6】SQLビューが表示されました。これがAccessがクエリから自動的に作成したSQL文です。
このSQL文をコピーしてください。コピーしたらクエリを保存しないで閉じます。
【7】続いて「SQL練習」のSQLビュー画面を開いてください。
【8】コピーしたSQL文を貼り付け、実行ボタン「!」をクリックします。
SELECT T07Slip.SLIP_CD, T07Slip.SLIP_DATE, T07Slip.CST_CD, T04Customer.CST_NAME, T05Sex.SEX, "〒" & [ZIP_CODE] & " " & [PREF_NAME] & [CITY_NAME] & [TOWN_NAME] & [ADDRESS] AS ADDRESS2
FROM ((((T07Slip INNER JOIN T04Customer ON T07Slip.CST_CD = T04Customer.CST_CD) INNER JOIN T05Sex ON T04Customer.SEX_CD = T05Sex.SEX_CD) INNER JOIN T03Town ON T04Customer.TOWN_CD = T03Town.TOWN_CD) INNER JOIN T02City ON T03Town.CITY_CD = T02City.CITY_CD) INNER JOIN T01Prefecture ON T02City.PREF_CD = T01Prefecture.PREF_CD
ORDER BY T07Slip.SLIP_CD;
【9】実行結果が表示されました。
SQL文をコピーしただけですので、もちろん同じ結果になります。大事なのは貼り付けたSQL文と同じものが書ければ同じ結果が出せるということです。
【10】「SQL練習」は保存しないで終了してください。
【解説】
テーブル数が増えるとSQL文をどう書いていいのかわからなくなります。その時はSQL文をゼロから考えるのではなく、とりあえずAccessが自動作成したものを参考にすることはとても効率的です。私もよく使っています。
しかし、Accessが自動で作成したSQL文は、テーブル同士の結合にINNER JOINが使われているため、FROM部分がとても複雑になっています。フィールド名も完全に「テーブル名.フィールド名」のかたちで指示されていて、冗長化されています。そのまま使うのではなく少し修正したほうが使いやすいです。
次回は修正したSQL文とINNER JOINについて説明します。