TableXからcolA、TableYからcolB、TableZからcolCの値を取得した場合、どのようにINSERTステートメントを記述すればよいですか?
例:INSERT INTO TableA(colA、colB、colC)VALUES(?、?、?)
可能であればアイデアはありますか?
INSERT INTO TableA(colA, colB, colC)
SELECT TableX.valA, TableY.valB, TableZ.valC
FROM TableX
INNER JOIN TableY ON :......
INNER JOIN TableZ ON ........
もちろん、TableX、TableY、およびTAbleZは(INNER JOINではなく)他の方法で関連付けられている場合もあります。
テーブル間の関係を見つけることができない場合AT ALL、
SELECT @value1 = valA FROM TableX WHERE ......
SELECT @value2 = valB FROM TableY WHERE ......
SELECT @value3 = valC FROM TableZ WHERE ......
そして、このような挿入:
INSERT INTO TableA(colA, colB, colC)
VALUES(@value1, @value2, @value3)
これが最終的な最終手段です。単一のSELECT
ステートメントですべてを表現することはできません。
マーク
Marc_sの回答に応じて、次のようなselectの関係のないテーブルからクエリを実行できます。
INSERT INTO TableA
(colA, colB, colC)
SELECT
(SELECT valA FROM TableX WHERE ...),
(SELECT valB FROM TableY WHERE ...),
(SELECT valC FROM TableZ WHERE ...)
Insert into TableA (ColA, ColB, ColC) . . .
表Aにあるような列名でなければなりません。何も問題はありません。
Insert into TableA (ColA, ColB, ColC) . . .
Select TableX.Col1, TableY.Col1, TableZ.Col5
From TableX, TableY, TableZ
Where . . .
選択するテーブルを結合する必要があります。
SQL結合に関するリソースは次のとおりです。
www.w3schools.com/sql/sql_join.asp
また、SQLの基本をカバーするこの無料のPDF本からの本 www.simple-talk.com もご覧ください):