*

Access VBA SQLの書き方3 INNER JOIN テーブルの結合

公開日: : 最終更新日:2014/04/20 SQL

SQLの書き方3 INNER JOIN テーブルの結合

前回はWHERE句の説明を行いましたので今回はテーブル同士の結合を行うSQL文の書き方を説明していきます。

スポンサーリンク

INNER JOIN

テーブル同士の結合は「INNER JOIN」を使用します。

sqlkakikata09

Accessのクエリで使用するテーブル同士の結合です。
この結合をSQLで表現するには「INNER JOIN」を使用します。

SELECT テーブル名1.*,テーブル名2.* FROM テーブル名 INNER JOIN テーブル名2 ON テーブル名1.フィールド名 = テーブル名2.フィールド名

例 (データベース作成講座で使用している「T_社員マスタ2013」、「T_性別マスタ」を使います。)

SQL = “SELECT T_社員マスタ2013.*, T_性別マスタ.* FROM T_社員マスタ2013 INNER JOIN T_性別マスタ ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード”

このSQLを実行すると、「T_社員マスタ」と「T_性別マスタ」をフィールド「性別コード」で結合した抽出結果が得られます。
また、SQLの書き方2で説明したWHERE句を使用する場合は、末尾に「WHERE T_社員マスタ2013.性別コード=’0’」を追加します。

SQL = “SELECT T_社員マスタ2013.*, T_性別マスタ.* FROM T_社員マスタ2013 INNER JOIN T_性別マスタ ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード WHERE T_社員マスタ2013.性別コード=’0′”

では実際にプログラムを作成してみましょう。
(使用するフォームはSQLの書き方1と同じものを使用しています。)

INNER JOINを使用したプログラム例

Private Sub コマンド0_Click()

Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim SQL As String

Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset

SQL = “SELECT T_社員マスタ2013.*, T_性別マスタ.* FROM T_社員マスタ2013 INNER JOIN T_性別マスタ ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード WHERE T_社員マスタ2013.性別コード=’0′”

RS.Open SQL, CN, adOpenStatic, adLockOptimistic

If RS.EOF = False Then

Do Until RS.EOF

Debug.Print RS!社員コード & RS!名前 & RS!性別

RS.MoveNext
Loop

End If

RS.Close: Set RS = Nothing
CN.Close: Set CN = Nothing

End Sub

前回と同様に「イミディエイトウィンドウ」に抽出結果を表示します。
また、今回は「社員コード」と「名前」と「性別」を表示させています。

sqlkakikata10

「社員コード」と「名前」及び「性別」(男)が表示されていれば成功です。

今回は「INNER JOIN」(内部結合)でSQLを作成しましたが、左外部結合、右外部結合もSQLで作成することが出来ます。

sqlkakikata11
「左外部結合」→LEFT JOIN

sqlkakikata12
「右外部結合」→RIGHT JOIN

長くなったSQL文の対処

「INNER JOIN」を使い、結合するテーブル名が増えだすとSQL文も長くなります。
SQL文が長くなりすぎるとVBの画面に入りきれなくなり、構文の確認が難しくなります。
プログラムの作成者により、構文の書き方は異なると思いますが私の場合は以下のように記述します。

SQL = “SELECT T_社員マスタ2013.*, T_性別マスタ.* FROM T_社員マスタ2013 INNER JOIN T_性別マスタ ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード WHERE T_社員マスタ2013.性別コード=’0′”

これを↓

SQL = “SELECT T_社員マスタ2013.*, T_性別マスタ.* ” _
& “FROM T_社員マスタ2013 INNER JOIN T_性別マスタ ” _
& “ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード ” _
& “WHERE T_社員マスタ2013.性別コード=’0′”

もしくは↓

SQL = “SELECT ”
SQL = SQL & “T_社員マスタ2013.*, ”
SQL = SQL & “T_性別マスタ.*, ”
SQL = SQL & “T_社員マスタ2013.性別コード ”
SQL = SQL & “FROM ”
SQL = SQL & “T_社員マスタ2013 ”
SQL = SQL & “INNER JOIN T_性別マスタ ”
SQL = SQL & “ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード ”
SQL = SQL & “WHERE ”
SQL = SQL & “(((T_社員マスタ2013.性別コード)=’0′))”

どちらも、同じ構文です。
私は後者を多用します。

いかがでしょうか?
今回は「INNER JOIN」を使用して、テーブル同士の結合を行いました。

スポンサーリンク

ad-pc

ad-pc

関連記事

sqlkakikata06

Access VBA SQLの書き方1 SELECT FROM 選択

SQLの書き方1 SELECT FROM 選択 SELECT文はSQLの中でも最も使用頻度が高い構

記事を読む

sqlkakikata15

Access VBA SQLの書き方4 ORDER BY 並べ替え

SQLの書き方4 ORDER BY 並べ替え 前回はINNER JOINの説明を行いましたので今回

記事を読む

no image

Access VBA SQL UPDATE文 更新クエリ

SQL UPDATE文 更新クエリ UPDATE table set フィールド1  = NewV

記事を読む

sqlkakikata08

Access VBA SQLの書き方2 WHERE 抽出条件

SQLの書き方2 WHERE 抽出条件 前回は「SELECT ~ FROM」を説明しましたので今回

記事を読む

no image

Access VBA SQL INSERT INTO文 追加クエリ

SQL INSERT INTO文 追加クエリ INSERT INTO table1(フィールド1,

記事を読む

no image

Access VBA SQL DELETE文 削除クエリ

SQL DELETE文 削除クエリ DELETE * FROM table table 削

記事を読む

sql01

Access VBA SQL SELECT文 選択クエリ

SQL SELECT文 選択クエリ SELECT文のプログラム例と説明です。 プログラム

記事を読む

no image

Access VBA SQL SELECT INTO文 テーブル作成クエリ

SQL SELECT INTO文 テーブル作成クエリ SELECT field1 (,field2

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

転職01
初心者がAccess VBAの仕事に就く為には

初心者がAccess VBAを使った仕事に就く 私はSEやITエンジ

sound01
Access VBA 音を鳴らす PlaySound

音を鳴らす PlaySound Access上で効果音を鳴らすプログ

pass01
Access VBA フォームをパスワードで制限

フォームをパスワードで制限 Accessで作成したデータベース使用時

prg01
Access VBA 処理の進行状況を表示するプログレスバー(ProgressBar)

処理の進行状況を表示するプログレスバー Accessで処理に時間のか

excel03
Access VBA AccessのデータをExcel(エクセル)へ変換

AccessのデータをExcel(エクセル)へ変換 Accessで使

→もっと見る

PAGE TOP ↑