【複数のテーブルを使うSQL文】
・複数のテーブルを結合して表示するには、テーブル同士の結合条件をWHERE部分に書きました。また同じ名前のフィールドがある場合は、「テーブル名.フィールド名」のかたちで指示する必要がありました。
SELECT CST_CD,CST_NAME,
T04Customer.TOWN_CD,ZIP_CODE,PREF_NAME,CITY_NAME,TOWN_NAME,ADDRESS,
TEL,BIRTH,T04Customer.SEX_CD,SEX
FROM T04Customer,T03Town,T02City,T01Prefecture,T05Sex
WHERE T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD
AND T04Customer.SEX_CD = T05Sex.SEX_CD;
【演算フィールド】
・「&」(アンパサンド)を使ってフィールドを結合したり、文字や空白も使えましたね。演算フィールドにはASで別名を付けました。
SELECT CST_CD,CST_NAME,
"〒" & ZIP_CODE & " " & PREF_NAME & CITY_NAME & TOWN_NAME & ADDRESS AS ADDRESS2,
TEL,BIRTH,SEX
FROM T04Customer,T03Town,T02City,T01Prefecture,T05Sex
WHERE T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD
AND T04Customer.SEX_CD = T05Sex.SEX_CD;
【グループ化】
T04Customerは何故ZIP_CODEではなくTOWN_CDを持っているか、グループ化を使って詳しく解説しました。理由は郵便番号が重複しているからでしたね。
Countで件数を数え、GROUP BYでグループ化しました。HAVINGはグループ化した結果に対する検索条件でした。
SELECT ZIP_CODE, Count(ZIP_CODE) AS CNT
FROM T03Town
GROUP BY ZIP_CODE
HAVING (Count(ZIP_CODE)>=2);
【主役となるテーブル】
・テーブル数が増えると主役となるテーブルが変わること、また同じフィールドがある場合はSELECT部分で主役側を使うことを学びました。これらは後々重要になってくる考え方です。