なぜT01Prefectureが必要なのか、同じフィールドがある場合どちらを選択するのかなどの点に注目して読み進めてください。
各フィールドの意味は以下の通りです。
・CITY_CD 市町村CD
・PREF_CD 都道府県CD
・CITY_NAME 市町村名
【1】Accessのファイル「SampleDB020.mdb」を起動します。
*簡単な操作は省略していきます。
【2】オブジェクトで「クエリ」を選択します。
【3】「デザインビューでクエリを作成する」をダブルクリックします。
デザインビューでクエリを作成することが決まっている場合は、このほうが手っ取り早いです。
【4】テーブル「T02City」を選択し、「追加」ボタンをクリックします。
【5】追加したら「閉じる」ボタンをクリックします。
【6】T02Cityが追加されました。見やすいようにデザインビューの大きさを広げてください。
【7】フィールドをダブルクリックするか、ドラッグすると画面下に追加できます。左からCITY_CD、PREF_CD、CITY_NAMEの順になるようにしてください。
【8】データシートビューで確認すると、市町村の一覧が表示されました。
しかしこのままでは市町村がどの都道府県に属しているのかわかりません。PREF_CDはありますが、番号だけではわかりにくいです。
【9】デザインビューに戻りテーブルを追加します。ツールバーから「テーブルの表示」をクリックします。
【10】テーブル「T01Prefecture」を追加します。追加したら閉じてください。
【11】T01Prefectureが追加されました。2つのテーブルはPREF_CDで関連付けられて線で結ばれています。
【12】PREF_NAMEをダブルクリックして追加します。
【13】データシートビューで確認すると、市町村に対応する都道府県名が表示されました。これはPREF_CDをもとに都道府県名を参照しているからです。
【14】CITY_NAMEとPREF_NAMEの表示順を入れ替えてみましょう。PREF_NAMEをクリックして反転させ、CITY_NAMEの前にドラッグします。
【15】PREF_NAMEが前にきました。
【16】データシートビューで確認すると、今度は見やすい順で表示されています。
このようにクエリを使うと複数のテーブルの内容を、まるで一つのテーブルのように扱うことができます。作成したクエリはテーブルと同じようにデータを操作したり、フォームやレポートを作ることができます。
【17】デザインビューで画面下のPREF_CDの テーブル: をよく見てください。「T02City」になっています。
2つのテーブルにPREF_CDがあり、どちらのPREF_CDを選ぶか迷うところですが、多側であるT02CityのほうのPREF_CDを選びます。
もともとT02Cityだけでは都道府県名が表示できないので、T01Prefectureをクエリに追加したわけですから、主役はT02Cityのほうだと考えるとわかりやすいです。
【18】どちらが多側かはテーブルをくらべてみればわかります。T01PrefectureのPREF_CDに「1」のレコードは1つしかありません。それに対しT02CityのPREF_CDに「1」のレコードは多数あります。これを「一対多」の関係といいます。
もし一側(T01Prefecture)のPREF_CDを選んだ場合はクエリを通じてデータを更新するときに、エラーになります。一側のデータが更新されるとマズイからです。
【19】全ての市町村を表示するとレコード数が1900件を超えますので、絞込みができるようにしてみましょう。PREF_CDの 抽出条件: に [PREF_CDを入力してください。] と入力します。
【20】データシートビューに切り替えると、パラメータが表示されるので、「8」を入力します。8は東京都です。
【21】東京都の市町村のみが抽出されました。
【22】クエリを保存します。クエリ名は「Q04City」としてください。
【23】クエリを保存したら一度クエリを閉じます。
【24】データベースウィンドウで作成したクエリ「Q04City」をダブルクリックすると、すぐにクエリが実行されパラメータが表示されます。
【25】他の都道府県でも抽出できるか、PREF_CDをいろいろ変えて試してみてください。
【26】動作を確認したらクエリを閉じてください。
これまで試してきたクエリは選択クエリといい、ダブルクリックして直接開いても問題ありません。
しかしクエリにはいきなり開く(実行する)とマズイものがあります。追加、更新、削除などを行うアクションクエリです。データベースのレコードが変わってしまいます。
そのため『クエリはデザインビューから開く』習慣を付けていたほうがいいです。
Accessの基本を短期間で学べるように工夫しています。リレーショナルデータベースの考え方が理解できます。
