0

TableA、TableB、TPopulate という 3 つのテーブルがあります。

テーブル: A、B には、PSEUDOCODE の例のストアド プロシージャを使用せずに、テーブル (TPopulate) を普及させる必要がある行がいくつかあります。

@loop1 = 1;
@loop2 = 1;
WHILE loop1 <= (Select COUNT(*) FROM TableA)
    WHILE loop2 <= (Select COUNT(*) FROM TableB)
        INSERT INTO TPopulate (column1, column2) VALUES (TableA.column1, TableB.column1)
    END;
END;

TableA Represent (users)
TableB Represent (Privileges)
TPopulate Represent (Users_Privileges)

私がやろうとしているのは、既存のすべてのユーザーにすべての特権を挿入することです。

4

1 に答える 1

1

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

これを達成する正しい方法は次のとおりです。まず、CROSS JOIN を使用して、tableA と tableB のすべての ID の組み合わせのデカルト セットを作成します。次に、そのセット全体を TPopulate に挿入します

INSERT INTO TPopulate (column1, column2)
SELECT  T1.PKField
        ,T2.PKField
FROM    TableA T1
CROSS JOIN
        TableB T2
于 2013-08-22T18:29:55.357 に答える