0

表1

ID

表2

ID

表3

ID|テーブル1_ID|テーブル2_ID

次の SQL (MySQL を使用) ステートメントが必要です。

for each row in table1 {
   for each row in table2 {
       insert in table3 values table1.id, table2.id;
}

insert/select ステートメントは存在しますか? または、ループを使用する必要がありますか?

4

1 に答える 1

0

ループを使用する必要はまったくありません。リレーショナル データベースを使用する場合は、SETS の観点から考える必要があります。

これを達成する正しい方法は次のとおりです。最初に を使用して、CROSS JOINtable1 と table2 の ID のすべての組み合わせのデカルト セットを作成します。次に、そのセット全体を table3 に挿入します 注: Table3 ID は自動番号であると想定しています。

INSERT INTO TABLE3 (TABLE1_ID,TABLE2_ID)
SELECT  T1.ID
        ,T2.ID
FROM    TABLE1 T1
CROSS JOIN
        TABLE2 T2
于 2013-08-22T15:12:15.287 に答える