Accessが自動的に作るSQL文

今回はAccessが自動的に作成するSQL文について説明します。複雑なSQL文を考える時、Accessが作ってくれるSQL文はとても参考になります。

【1】Accessのファイル「SampleDB4.mdb」を起動します。オブジェクトで「クエリ」を選択後、「Q01Slip」をクリックし、「デザイン」で開きます。

access-sql195.gif


【2】クエリ「Q01Slip」がデザインビューで開きました。

access-sql196.gif

クエリQ01Slipはあらかじめデザインしてあります。必要なテーブルの表示、テーブル同士を結合、フィールドの選択、演算フィールド、並べ替えの設定が完了しています。次は実行結果を見てみましょう。


【3】「データシートビュー」をクリックします。

access-sql205.gif


【4】クエリ「Q01Slip」の実行結果が表示されました。

access-sql206.gif

このような実行結果が出せるSQL文を作るにはどうしたらよいのでしょうか?実はAccessにはSQL文を自動作成してくれる機能があります。


【5】「SQLビュー」をクリックします。

access-sql203.gif


【6】SQLビューが表示されました。これがAccessがクエリから自動的に作成したSQL文です。

access-sql204.gif

このSQL文をコピーしてください。コピーしたらクエリを保存しないで閉じます。


【7】続いて「SQL練習」のSQLビュー画面を開いてください。

access-sql85.gif


【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;

access-sql207.gif


【9】実行結果が表示されました。

access-sql208.gif

SQL文をコピーしただけですので、もちろん同じ結果になります。大事なのは貼り付けたSQL文と同じものが書ければ同じ結果が出せるということです。


【10】「SQL練習」は保存しないで終了してください。


【解説】
テーブル数が増えるとSQL文をどう書いていいのかわからなくなります。その時はSQL文をゼロから考えるのではなく、とりあえずAccessが自動作成したものを参考にすることはとても効率的です。私もよく使っています。

しかし、Accessが自動で作成したSQL文は、テーブル同士の結合にINNER JOINが使われているため、FROM部分がとても複雑になっています。フィールド名も完全に「テーブル名.フィールド名」のかたちで指示されていて、冗長化されています。そのまま使うのではなく少し修正したほうが使いやすいです。

次回は修正したSQL文とINNER JOINについて説明します。

スポンサードリンク

スポンサードリンク






Access SQL初心者入門講座TOPへ