HOME > 即効テクニック > AccessVBA > データベース・データ保護 > 複数のテーブルから新しいテーブルを作成する

即効テクニック

データベース・データ保護

複数のテーブルから新しいテーブルを作成する

(Access 2000/2002)
●概要●
構文 SELECT 元テーブル1.フィールド1 [ AS 新しいフィールド名1],
   元テーブル2.フィールド1 [ AS 新しいフィールド名2] 
   INTO  新しいテーブル名 FROM 元のテーブル1,元テーブル2;

SELECT INTOステートメントを使用して、複数のテーブルから新しいテーブルを作成します。SELECT句に続けてフィールド名を記述し、INTO句に新しいテーブル名を指定して、既存のテーブルから新しいテーブルを作成します。
SELECT句には、元となるテーブルのフィールド名だけでなく、関数の戻り値を指定することもできます。フィールド名を記述するときは、どのテーブルのフィールドかを明確に記述します。既定では、新しいテーブルのフィールド名やデータ型はそのフィールドの元のテーブルの属性が引き継がれて作成されます。SELECT句の後に関数の戻り値を指定したり、元のテーブルとフィールド名を変更したい場合は、ASキーワードを使用して新しいテーブルのフィールド名を指定することができます。
新しく作成するテーブルと同じ名前のテーブルが既に存在する場合はエラーとなります。
サンプルでは、「社員テーブル」、「給与テーブル」、「部署テーブル」から「平均給与テーブル」という名前の新しいテーブルを作成します。「平均給与テーブル」の、「部署コード」、「部署名フィールド」の属性はそれぞれ「社員テーブル」、「部署テーブル」から引き継がれます。給与の平均値を表すAVG関数の戻り値のフィールドは、ASキーワードを使用して、「平均給与」というフィールド名で作成します。

●サンプル●
'複数のテーブルから新しいテーブルを作成する
Public Sub Sample()

    Dim myDB As Database
    Dim mySQL As String

    'SQLステートメントを定義する
    mySQL = "SELECT A.部署コード,C.部署名,AVG(給与) AS 平均給与 " & _
            "INTO 平均給与テーブル " & _
            "FROM 社員テーブル A,給与テーブル B,部署テーブル C " & _
            "WHERE A.社員コード=B.社員コード " & _
            "AND A.部署コード=C.部署コード " & _
            "GROUP BY A.部署コード,C.部署名;"

    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    'SQLを実行する
    myDB.Execute mySQL

End Sub