【1】Accessのファイル「SampleDB3.mdb」を起動し、「SQL練習」のSQLビュー画面を開いてください。
【2】以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT CST_CD,CST_NAME,TOWN_CD,ADDRESS,TEL,BIRTH,SEX_CD
FROM T04Customer;
【3】顧客の一覧が表示されました。
レコード数が10件だということを確認してください。以降他のテーブルと関連付ける時に、データのつじつまが合わないと10件正しく表示できませんので目安になります。
でもこのままでは顧客の住所がわかりませんよね。次は地域名まで表示してみましょう。
【4】以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT CST_CD,CST_NAME,T04Customer.TOWN_CD,TOWN_NAME,ADDRESS,TEL,BIRTH,SEX_CD
FROM T04Customer,T03Town
WHERE T04Customer.TOWN_CD = T03Town.TOWN_CD;
SELECT部分を見ると「T04Customer.TOWN_CD」があります。TOWN_CDはT04CustomerとT03Townの両テーブルにありますが、今回中心となるテーブルはT04Customerですので、T04Customer側のTOWN_CDを使っています。
FROM部分には使うテーブルを「,」(カンマ)で区切って書きます。
WHERE部分には共通するフィールドを「=」(イコール)でつなげて結合条件を書きますが、同じ名前のフィールドなので、「テーブル名.フィールド名」のかたちで指示する必要があります。
【5】地域名が表示されました。
次は市町村名まで表示してみましょう。
【6】以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT CST_CD,CST_NAME,
T04Customer.TOWN_CD,CITY_NAME,TOWN_NAME,ADDRESS,
TEL,BIRTH,SEX_CD
FROM T04Customer,T03Town,T02City
WHERE T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD;
SELECT部分にCITY_NAME、
FROM部分にT02City、
WHERE部分にT03Town.CITY_CD = T02City.CITY_CD
を追加しています。
【7】市町村名が表示されました。
次は都道府県名まで表示してみましょう。
【8】以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT CST_CD,CST_NAME,
T04Customer.TOWN_CD,PREF_NAME,CITY_NAME,TOWN_NAME,ADDRESS,
TEL,BIRTH,SEX_CD
FROM T04Customer,T03Town,T02City,T01Prefecture
WHERE T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD;
SELECT部分にPREF_NAME、
FROM部分にT01Prefecture、
WHERE部分にAND T02City.PREF_CD = T01Prefecture.PREF_CD
を追加しています。
【9】都道府県名が表示されました。
でも「TOWN_CD」ではピンときませんのでZIP_CODE(郵便番号)と入れ替えて表示してみましょう。
【10】以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT CST_CD,CST_NAME,
ZIP_CODE,PREF_NAME,CITY_NAME,TOWN_NAME,ADDRESS,
TEL,BIRTH,SEX_CD
FROM T04Customer,T03Town,T02City,T01Prefecture
WHERE T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD;
SELECT部分でT04Customer.TOWN_CDをZIP_CODEに変更しただけです。
【11】ZIP_CODE(郵便番号)が表示されました。
普段から見慣れているZIP_CODE(郵便番号)のほうがわかりやすいですね。
【解説】
はじめに「T04Customer」(顧客マスター)だけを表示したのには理由があります。いろんなテーブルを関連付けていますが、あくまで中心はT04Customerです。他のテーブルはT04Customerのデータを補足するためのものだということに注意してください。
同じ名前のフィールドがあった場合、「どちらが中心か?」ということを考えるとやさしくなります。