Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

アクションクエリの作成と実行 - 追加クエリ - テーブルの追加 : SQL入門講座



追加クエリの第二弾です。前回は個別の値をテーブルレコードに追加する方法をご紹介しました。VALUES句の利用でしたね。今回は、テーブルに他のテーブルのレコードを追加する追加クエリを紹介します。

INSERT INTO 〜 FROM 〜 構文

INSERT INTO 〜 FROM 〜 構文とは、INSERT INTO句で指定したテーブルの各フィールドに、FROM句で指定したテーブルレコードを追加するSQL構文です。

  • INSERT INTO句で指定したフィールドとFROM句で指定したデータとは対になります。
  • INSERT INTO句に指定するテーブル、フィールドは、テーブル名(フィールド名1、フィールド名2、…)の形式で指定します。
  • FROM句に指定するテーブル、フィールドは、テーブル名(フィールド名1、フィールド名2、…)の形式で指定します。
  • WHERE句を用いてレコードを抽出してから追加することも可能です。
  • SQLをプロシージャ内で使用する場合、SQL自体をダブルコーテーション("")で囲みますので、引数adddata がテキスト型である場合、ダブルコーテーション("")ではなくシングルコーテーション(')で囲みます。
  • INSERT INTO句に、複数のテーブルを指定することはできません。
  • Accessでレコードを追加する「追加クエリ」と機能的には同じです。
サンプルテーブル
  1. レコードの追加を受けるサンプルテーブル(生徒管理)を下記のように用意します。
ID 生徒名 性別
1 松永 良子 女性
2 田口 きさよ 女性
3 鈴木 真一 男性
4 佐藤 信二 男性
  1. レコードの追加を行うサンプルテーブル(T_temp)を下記のように用意します。
生徒名 性別
内田 洋子 女性
佐々木 美千代 女性
倉西 誠 男性
構文
INSERT INTO tableA (fieldA1,…) SELECT (fieldB1,…) FROM tableB
引数 意味 指定
tableA 追加先のテーブル名を指定します。 省略不可
tableB 追加元のテーブル名を指定します。 省略不可
fieldA 追加先のテーブルフィールド名を指定します。
複数の場合は、カンマ(,)で区切ります。
全フィールドを対象にする場合は、省略可
fieldB 追加元のテーブルフィールド名を指定します。
複数の場合は、カンマ(,)で区切ります。
全フィールドを対象にする場合は、アスタリスク(*)を記述します。省略不可
サンプル構文

「生徒管理」テーブルに「T_temp」テーブルの全レコードを追加します。

  • INSERT INTO 生徒管理 SELECT * FROM T_temp

「生徒管理」テーブルに「T_temp」テーブルで「性別」フィールドが女性であるレコードを追加します。

  • INSERT INTO 生徒管理 SELECT * FROM T_temp WHERE 性別 = "女性"

DAOを用いた事例

DAOのExcuteメソッドを用いて以下のようにSQLを実行します。

Sub MySQLIntoSelect()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim mySQL As String
    
    Set db = CurrentDb()
    ' 全レコードを削除するSQLを記述します。
    mySQL = "INSERT INTO 生徒管理 SELECT * FROM T_temp WHERE 性別 = '女性'"
    
    If MsgBox("該当レコードを追加します。", vbYesNo) = vbYes Then
        ' SQLを実行します。
        db.Execute mySQL
        MsgBox "該当レコードを追加しました。"
    End If
       
    db.Close: Set db = Nothing
    
Exit Sub

エラー:
    
    MsgBox Err.Number & " : " & Err.Description
    Exit Sub
    
End Sub
留意点
  1. WHERE句を組み合わせて、条件抽出の設定を行っています。
  2. Excuteメソッドを実行すると、Access既定の警告メッセージは表示されません。
  3. VBA内でSQLを用いる場合は、前後をダブルクォーション(")で囲みます。
結果
  1. 下記のようにレコードが追加されます。

  1. SQLを実行します。

追加クエリ

このSQLをクエリで作成すると、下記のようになります。

留意点
  • 抽出条件は、アスタリスク(*)を設定したフィールドには使用できません。 よって、上記のようにフィールド名を個別に指定します。この点がSQLと大きく異なるところです。

2004/08/19

ページの先頭へ 前ページへ戻る

 


アクションクエリの作成と実行 - 追加クエリ - テーブルの追加 : SQL入門講座


-Microsoft Access Club-

アダルト・ゲーム配信可能なPLESKパネル付属の専用・共有レンタルサーバーを提供しています。
アダルトやゲーム配信が可能です。
全専用/共有レンタルサーバーにPLESKパネルをインストール済み。