顧客の住所を表示

T04Customer(顧客マスター)は都道府県名、市町村名、地域名などのデータを持っていませんが、共通するフィールドを使って他のテーブルにあるデータを表示することができます。今回はその方法を学びます。

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

access-sql85.gif


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

SELECT CST_CD,CST_NAME,TOWN_CD,ADDRESS,TEL,BIRTH,SEX_CD
FROM T04Customer;

access-sql107.gif


【3】顧客の一覧が表示されました。

access-sql108.gif

レコード数が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;

access-sql109.gif

SELECT部分を見ると「T04Customer.TOWN_CD」があります。TOWN_CDはT04CustomerとT03Townの両テーブルにありますが、今回中心となるテーブルはT04Customerですので、T04Customer側のTOWN_CDを使っています。

FROM部分には使うテーブルを「,」(カンマ)で区切って書きます。

WHERE部分には共通するフィールドを「=」(イコール)でつなげて結合条件を書きますが、同じ名前のフィールドなので、「テーブル名.フィールド名」のかたちで指示する必要があります。


【5】地域名が表示されました。

access-sql110.gif

次は市町村名まで表示してみましょう。


【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;

access-sql111.gif

SELECT部分にCITY_NAME、
FROM部分にT02City、
WHERE部分にT03Town.CITY_CD = T02City.CITY_CD
を追加しています。


【7】市町村名が表示されました。

access-sql112.gif

次は都道府県名まで表示してみましょう。


【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;

access-sql113.gif

SELECT部分にPREF_NAME、
FROM部分にT01Prefecture、
WHERE部分にAND T02City.PREF_CD = T01Prefecture.PREF_CD
を追加しています。


【9】都道府県名が表示されました。

access-sql114.gif

でも「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;

access-sql115.gif

SELECT部分でT04Customer.TOWN_CDをZIP_CODEに変更しただけです。


【11】ZIP_CODE(郵便番号)が表示されました。

access-sql116.gif

普段から見慣れているZIP_CODE(郵便番号)のほうがわかりやすいですね。


【解説】
はじめに「T04Customer」(顧客マスター)だけを表示したのには理由があります。いろんなテーブルを関連付けていますが、あくまで中心はT04Customerです。他のテーブルはT04Customerのデータを補足するためのものだということに注意してください。

同じ名前のフィールドがあった場合、「どちらが中心か?」ということを考えるとやさしくなります。

スポンサードリンク

スポンサードリンク






Access SQL初心者入門講座TOPへ