●概要●
構文 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