【1】Accessのファイル「SampleDB2.mdb」を起動し、「SQL練習」のSQLビュー画面を開いてください。
【2】以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT TOWN_CD,CITY_CD,ZIP_CODE,TOWN_NAME
FROM T03Town;
SELECTで指定するフィールド数が増えただけで、ここまでは第一段階と同じですね。
【3】地域一覧が表示されました。レコード数が121,882件あることを確認しておいてください。レコード数は重要です。
しかしテーブル「T03Town」だけでは、地域がどの市町村にあるのかわかりません。そこで次はテーブル「T02City」を関連付けて市町村名を表示できるようにします。
【4】以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT TOWN_CD,T03Town.CITY_CD,ZIP_CODE,CITY_NAME,TOWN_NAME
FROM T03Town,T02City
WHERE T03Town.CITY_CD = T02City.CITY_CD;
【5】市町村名が入った地域一覧が表示されました。
レコード数が121,882件あることを確認してください。「T02City」を追加する前後でレコード数が変わっていない場合は、正しく表示されています。レコード数が変わる場合は2つのテーブルにあるデータに矛盾があります。テーブルを関連付ける前後でレコード数を確認するのは大事なことです。
【6】「SQL練習」は保存しないで終了してください。
【解説】
SELECT TOWN_CD,T03Town.CITY_CD,ZIP_CODE,CITY_NAME,TOWN_NAME
FROM T03Town,T02City
WHERE T03Town.CITY_CD = T02City.CITY_CD;
これまでのSQL文と違うのは3点です。
1点目は「CITY_CD」が「T03Town.CITY_CD」となっています。理由はCITY_CDという名前のフィールドが、T03TownとT02Cityの両テーブルにあるからです。コンピュータは明確に指示しないと動けません。そこで「どのテーブルのCITY_CD」かということを「テーブル名.フィールド名」のかたちで指示する必要があります。もし違うフィールド名ならテーブル名は省略できます。フィールド名が違えばコンピュータは区別できるからです。
FROM T03Town,T02City
2点目はFROMで使用するテーブルを「,」(カンマ)で区切って書きます。
WHERE T03Town.CITY_CD = T02City.CITY_CD;
3点目目はテーブル同士を関連付けるには、WHEREの部分で共通のフィールドを =(イコール)でつなげます。上記と同じ理由で、フィールド名が同じ場合は、「テーブル名.フィールド名」のかたちで指示する必要があります。