SQLを使ってテーブルを結合する方法 ・2つのテーブルの結合フィールドの値が一致する場合に2つのテーブルのレコードを結合 SELECT [両テーブルのうち、表示したいフィールド] ・外部結合では、結合フィールドの値が一致しないレコードも結果に含めることができる 左側のテーブル(一側)のすべてのレコード ー それに一致する右側のテーブル(多側)のレコード SELECT [両テーブルのうち、表示したいフィールド] 右側のテーブル(一側)のすべてのレコード ー それに一致する左側のテーブル(多側)のレコード SELECT [両テーブルのうち、表示したいフィールド]
事前にリレーションシップが可能なテーブルを準備しておく
内部結合【INNER JOIN句】
・結合するフィールド同士は同じフィールド名でなくてもよいが、データ型およびその種類が一致していることが必須基本構文
FROM テーブルA INNER JOIN テーブルB
ON テーブルA.結合フィールド = テーブルB.結合フィールド
▼記述例▼Sub InnerJoin_test()
Dim JOINSQL As String
JOINSQL = "SELECT テーブルA.郵便番号,都道府県,市区町村"& _
"FROM テーブルA INNER JOIN テーブルB" & _
"ON テーブルA.郵便番号=テーブルB.郵便番号:"
CurrentDb.QueryDefs("POSTCODEクエリ").SQL = JOINSQL 'クエリ名をセット
DoCmd.OpenQuery"POSTCODEクエリ" '実行
End Sub
外部結合【LEFT JOIN句 / RIGHT JOIN句】
・結合したテーブルにレコードがない場合にはNull値が入る
→その3で解説予定
左外部結合
左外部結合の基本構文
FROM テーブルA LEFT JOIN テーブルB
ON テーブルA.結合フィールド = テーブルB.結合フィールド
右外部結合
右外部結合の基本構文
FROM テーブルA RIGHT JOIN テーブルB
ON テーブルA.結合フィールド = テーブルB.結合フィールド
▼記述例▼Sub LeftJoin_test()
Dim JOINSQL As String
JOINSQL = "SELECT テーブルA.郵便番号,都道府県,市区町村"& _
"FROM テーブルA LEFT JOIN テーブルB" & _
"ON テーブルA.郵便番号=テーブルB.郵便番号:"
CurrentDb.QueryDefs("POSTCODEクエリ").SQL = JOINSQL 'クエリ名をセット
DoCmd.OpenQuery"POSTCODEクエリ" '実行
End Sub
テーブルの結合解説 その3
tama-shi.hatenadiary.com
テーブルの結合解説 その1
tama-shi.hatenadiary.com