SQLを使ってテーブルを結合する方法 ・外部結合で結合した際、一方のテーブルにレコードがない場合にはNull値が入る SELECT [両テーブルのうち、表示したいフィールド] ・各テーブル・各クエリのレコード構造が同じ場合にUNIONを使用できる
事前にリレーションシップが可能なテーブルを準備しておく
一方のテーブルにのみ存在するレコードの抽出
・そのNull値を利用し、一方のテーブルに存在してもう一方のテーブルに存在しないレコードを抽出する基本構文
FROM テーブルA LEFT JOIN テーブルB
ON テーブルA.結合フィールド = テーブルB.結合フィールド
WHERE テーブルA.結合フィールド IS NULL;
▼記述例▼Sub LeftJoin_test()
Dim JOINSQL As String
JOINSQL = "SELECT テーブルA.郵便番号,都道府県,市区町村"& _
"FROM テーブルA LEFT JOIN テーブルB" & _
"ON テーブルA.郵便番号=テーブルB.郵便番号
"WHERE テーブルA.郵便番号 IS NULL;"
CurrentDb.QueryDefs("POSTCODEクエリ").SQL = JOINSQL 'クエリ名をセット
DoCmd.OpenQuery"POSTCODEクエリ" '実行
End Sub
End Sub
テーブルとテーブル(またはクエリ)を結合【UNION演算子】
・結合したテーブルやクエリに同じレコードがある場合、重複は削除される
→重複を削除したくない場合には「UNION ALL」のようにALL述語を追記する
UNIONの基本構文
SELECT フィールドA, フィールドB, フィールドC,....
FROM テーブル1
UNION
SELECT フィールドA, フィールドB, フィールドC,....
FROM テーブル2
▼記述例▼
Sub UnionJoin_test() Dim JOINSQL As String JOINSQL = "SELECT * FROM テーブル1"& _ "UNION" & _ "SELECT * FROM テーブル2:" CurrentDb.QueryDefs("POSTCODEクエリ").SQL = JOINSQL 'クエリ名をセット DoCmd.OpenQuery"POSTCODEクエリ" '実行 End Sub
テーブルの結合解説 その1
tama-shi.hatenadiary.com
テーブルの結合解説 その2
tama-shi.hatenadiary.com