【Access】テーブル間の結合で、値が一致しない行も表示させる方法(結合のプロパティ/JOIN)

イメージの参考サイト

AccessやSQLが初心者なので勉強中だが、ようやく便利そうな使い方がわかってきたのでメモ

結合の関係がわかってきて、ちょっと楽しい。

まず、サンプルのテーブルとして T1 と T2 を作成 

F1にテーブル間で結合したいキー項目とする。

<> 

<> 

<> 

<> 

<> 

<> 

<> 

<>

  T1

F1 F2
1234 あああああ
1235 いいい
1237 ううう
<> 

<> 

<> 

<>

T2

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って便利かもしれない。

コメント

タイトルとURLをコピーしました