AccessやSQLが初心者なので勉強中だが、ようやく便利そうな使い方がわかってきたのでメモ
結合の関係がわかってきて、ちょっと楽しい。
まず、サンプルのテーブルとして T1 と T2 を作成
F1にテーブル間で結合したいキー項目とする。
F1 | F2 |
1234 | あああああ |
1235 | いいい |
1237 | ううう |
F1 | F2 |
1237 | ABCD |
次に、T1 と T2 の結合結果を取得するクエリを作成する。(その際に、結合のプロパティを変更)
■結合のプロパティが「1:両方のテーブル結合フィールドが同じ行だけを含める。」の場合の結果
F1 | T1.F2 | T2.F2 |
1237 | ううう | ABCD |
この時、Accessが自動生成するSQL
SELECT T1.*, T2.F2
FROM T2 INNER JOIN T1 ON T2.F1 = T1.F1;
■結合のプロパティが「2:"T2"の全レコードと"T1"の同じ結合フィールドのレコードだけを含める。」の場合の結果
F1 | T1.F2 | T2.F2 |
1237 | ううう | ABCD |
この時、Accessが自動生成するSQL
SELECT T1.*, T2.F2
FROM T2 LEFT JOIN T1 ON T2.F1 = T1.F1;
■結合のプロパティが「3:"T1"の全レコードと"T2"の同じ結合フィールドのレコードだけを含める。」の場合の結果
F1 | T1.F2 | T2.F2 |
1234 | あああああ | |
1235 | いいい | |
1237 | ううう | ABCD |
この時、Accessが自動生成するSQL
SELECT T1.*, T2.F2
FROM T2 RIGHT JOIN T1 ON T2.F1 = T1.F1;
自分的に仕事で使いたかったパターンは、
結合のプロパティが「3:"T1"の全レコードと"T2"の同じ結合フィールドのレコードだけを含める。」の場合の結果
だったが、結合のプロパティの設定変更(JOINの変更)をすることで結果がこのように変わることがわかったのは勉強になった。
ちなみに、”Accessのクエリを作成する=SQLが自動生成される”という関係性を知らなかった。
自動生成された文法はちょっと冗長で、読めたもんじゃないとも思うけど、ちょっとSQLプログラムをかじった程度の初心者には、これで十分だ。
Accessって便利かもしれない。
コメント