さて、今回はクエリの作成です。
クエリには色々な種類がありますが、一番オーソドックスな選択クエリから解説したいと思います。この講座ではステップbyステップで簡単に進めることができます。
是非、ご参考に!
関連講座
- Access データベースの正規化 講座 Vol.1
- Access データ型の決定とフィールドの構築 講座 Vol.2
- Access ルックアップウィザード 講座 Vol.3
- Access リレーションシップ 講座 Vol.4
- Access クエリ作成 講座 Vol.5 ← ココ
- Access 関数の使い方 講座 Vol.6
オススメの参考書
Accessのデータベースのツボとコツがゼッタイにわかる本2013/2010対応
この本の良い所
解説は絵付きで、初心者にもやさしい作りとなっています。データベースの基礎から、クエリの選択、レポートの作成などの基礎的な設定や操作が学べます。特に、<データベース>と<クエリ>は、他の参考書と比べて詳細に記述されています。役に立つ場面も多いでしょう。また、サンプルデータ(ダウンロード)も付属しているので、その点も丁寧に作られています。
本書ではクエリの箇所は、82~165ページまでの80ページ以上を費やして説明しています。
クエリの箇所の目次
- 選択クエリの作成
- 選択クエリで検索
- あいまいな条件で検索
- 比較演算子で検索
- 複合条件での検索
- フィールド値の演算
- 関数の利用
- 条件による抽出
- 更新クエリでレコードを更新
- 削除クエリでレコードを削除
ちょっと残念な所】
あくまでも初級者向けのテキストであり、中級者以上の人には物足りない内容。本書は、データベースや操作などを一から学べるものの、テクニック的なものではありません。「Access初めてみようかな~・・・・」という人向けの内容です。関数や引数の説明はざっくりとされているものの、書式についての説明はありません。
なので、関数を詳細に知りたい場合は、ネットでの検索が必須となります。
また、クロス集計やグループ集計についての詳細な記述がありません。より深く学ぶためには、他の参考書と併用する必要があります。
上記の点を考慮して購入しましょう!
マスタテーブル
クエリを作成する前に、既存のテーブルを一度確認してみよう。マスタ、トランザクションテーブルは以下の通りとなっている。
マスターテーブルは、以下の通り。
- 「顧客情報」
- 「商品情報」
- 「社員情報」
- 「取引先(仕入先)情報」
- 「商品の区分」
- 「仕入先担当者情報」
基本的に管理者側が更新するためのもの。
(※業種にもよるが、「顧客テーブル」はマスタではなく、トランザクションとなるケースもある)
顧客マスタ
顧客の情報を格納するためのテーブル。主キーの顧客IDはオートナンバーではなく、<数値型>で<インデックス:重複なし>に設定しておく。
<顧客名>には<フリガナ支援>、<郵便番号>には<住所入力支援>を適用させる。
仕入先マスタ
商品の仕入れ先の会社情報を格納するためのテーブル。担当者コードは、1つ会社に1つのコードが割り振られる。
仕入先担当者マスタ
仕入先の担当者の情報を格納するテーブル。
本来は、仕入先マスタに担当者の個人情報を格納していた。しかし、テーブルを分け方がスッキリするのでこのテーブルを作成。担当者コードは仕入先の担当者コードとリレーションを設定している。主キーの<管理者ID>は、ただの管理用のキー(サロゲートキー)である。
仕入先の担当者が交代することも有りうるので、<現在担当者>のフィールドで判別している。
(データを上書き更新すればよかった気もするのだが、データベースの理念に基づき、上記のように構築)
社員マスタ
社員の情報を格納するためのテーブル。
主キーは<社員ID>であり、<数値型>で設定している。備考に<頭文字:SYA + 4桁>とあるが、このカスタム書式は、入力フォームを作成した後、適用させていくことになる。
(※データ挿入の時点でカスタム書式を設定してしまうと、ルックアップで壁にぶち当たるため)
商品マスタ
商品情報を格納するためのテーブル。
<商品区分コード>や<仕入先ID>はルックアップウィザードで設定する。
商品区分マスタ
商品の区分情報を格納するためのテーブル。
区分コードも、他のテーブルと同じく<数値型>で運用する。カスタム書式も同様に、入力フォームのコントロールにて使用する。
トランザクションテーブル
トランザクションテーブルは以下の通り。
- 「注文情報」
- 「注文の詳細情報」
- 「発注情報」
- 「発注の詳細情報」
- 「仕入情報」
- 「仕入の詳細情報」
主に、頻繁に更新する可能性があるテーブルである。通常の「テーブル」とはトランザクションテーブルのことを指す。
注文テーブル
顧客からの注文を受け付けた情報を格納するためのテーブル。
主キー<注文ID>は、<数値型>で定義する。<顧客ID>と<社員ID>はルックアップウィザードにて設定する。入金ステータスは「未入金 / 入金済み」で固定値でルックアップウィザードで作成。
注文詳細テーブル
注文の詳細情報を格納するためのテーブル。
このテーブルの主キーは二つ<注文ID>と<商品ID>の複合キーとする。発送ステータスは「発送 / 未発送」とする。業務によっては、注文された商品をまとめて発送するケースの方が多いだろう。
そういう想定の場合は、注文テーブルに<発送ステータス>のフィールドを作成すると良い。今回、詳細テーブルに<発送ステータス>をつけた理由は、「個別に商品を発送するケースもありうるかもしれない」
という想定のもとで構築したからだ。
仮に、何らかの事情で顧客が別々に商品を発送させる必要があるかもしれない・・・。例えば、2つの商品のうち、片方の商品を別の場所に発送してほしい・・・といったケースだ。
業務のシステムにもよるが、今回はこのような事案も考慮して、こちら側に<発送ステータス>をつけた。
発注テーブル
商品を発注した情報を格納するテーブル。
主キーは<発注ID>、<数値型>にて管理する。<社員ID>と<仕入先ID>は、ルックアップウィザードで設定する。
発注詳細テーブル
「どの商品」を、「いくつ」発注したのかの、詳細情報を格納するテーブル。このテーブルの主キーは<発注ID>と<商品ID>の2つ。
仕入テーブル
商品を仕入れた時の情報を格納するテーブル。
誰が仕入を担当したのかがわかるように、<社員ID>を持たせておく。<ステータス>は、備考がわりに使用する。
仕入詳細テーブル
「何を」、「いくつ」仕入のかの情報を格納するテーブル。
発注詳細テーブルと同様に、主キーは2つ、<仕入ID>と<商品ID>の複合キーとなっている。<ステータス>は、備考がわりに使用する。
Access クエリ の作成
クエリとは、「質問する」「紹介する」「問い合わせる」などの意味をもつ言葉です。独自のフィールドを配置・条件を設定することによって、特定の情報を抽出することができます。
クエリ作成のポイント1
クエリを利用するためには、まずりリレーションを設定しておく必要があります。
ルックアップウィザードでも、リレーションシップでもOKです。
クエリ作成のポイント2
さらに、上記の画像のように、抽出したい項目を考える必要があります。
例えば、注文状況を確認するためには、以下の項目が必要です。次に、この項目がどのテーブルの、どのフィールドなのか?を考えましょう。
例えば・・・
- 「いつ」 → 注文日 → T_注文
- 「誰が」 → 顧客名 → M_顧客
- 「何を」 → 商品名 → M_商品
- 「いくら」 → 単価 → M_商品
- 「いくつ」 → 数量 → T_注文詳細
- 「購入金額(小計)」 → 導出項目(単価 × 数量)
最低限、これだけの項目があれば、注文の情報を抽出することができます。
クエリの配置と利用方法
クエリの設置方法は以下の手順で行います。
- 上部メニュー > クエリデザイン > テーブルを選択
- フィールドの配置
- リネームと関数の利用
1.クエリデザインの選択
上部メニューのクエリデザインを選択します。テーブルの表示から、クエリを選択したいフィールドがあるテーブルを「追加」で配置します。
2.フィールドの配置
それぞれのテーブルから必要なフィールドを下部に「ドラック&ドロップ」で配置します。下部の、フィールド欄に「フィールド名」が、テーブル欄が入力されていることを確認してください。
3.リネームと関数の利用
下部にある「フィールド欄」には、<リネーム>や<関数>が利用できます。例えば、「注文時刻」という予約されたフィールド名があります。
これを「注文時間」とリネームする場合、下記のようになります。
注文時間:注文時刻
こうすることで、注文時刻が注文時間にリネームされます。セミコロン(:)を使用すると、リネームできることを覚えておいてください。
また、クエリは演算も可能です。
小計 : [単価] * [数量]
上記は「単価のフィールド」と「数量のフィールド」を利用した演算になります。
さらに、こんな使い方もできます。
ランク : IIf([小計]>=10000,”優良顧客”)
先ほどリネームした「小計」を上記のように、直接利用することもできます。どうだったでしょうか?上手く出来ましたか??関数の種類と使い方は、Access 関数講座(現在準備中)をご参照ください。
他にも色々な利用方法があるのですが、ステップbyステップで覚えていきましょう!