スポンサードリンク

SQL テーブルの結合

今回は2つのテーブルを関連付けて、まるで1つのテーブルのように表示するSQL文を学びます。

【1】Accessのファイル「SampleDB2.mdb」を起動し、「SQL練習」のSQLビュー画面を開いてください。

access-sql85.gif


【2】以下のSQL文を入力し、実行ボタン「!」をクリックします。

SELECT TOWN_CD,CITY_CD,ZIP_CODE,TOWN_NAME
FROM T03Town;

access-sql86.gif

SELECTで指定するフィールド数が増えただけで、ここまでは第一段階と同じですね。


【3】地域一覧が表示されました。レコード数が121,882件あることを確認しておいてください。レコード数は重要です。

access-sql87.gif

しかしテーブル「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;

access-sql88.gif


【5】市町村名が入った地域一覧が表示されました。

access-sql89.gif

レコード数が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の部分で共通のフィールドを =(イコール)でつなげます。上記と同じ理由で、フィールド名が同じ場合は、「テーブル名.フィールド名」のかたちで指示する必要があります。

スポンサードリンク






Access SQL初心者入門講座TOPへ