1

C# と SQL を使用して、このコードでいくつかのテーブルに値を挿入しようとしています:

string query1 = "select PlayerID from Table1";
string query2 = "select GameID from Table2";

string q = "insert into Table3 (PlayerID, GameID) values(" + query1 + "," + query2 + ")";

出来ますか?

編集:

私は3つのテーブルを持っています:

  1. playersTbl- 自動インクリメント ID (主キー) を使用
  2. gameTbl - 自動インクリメント ID (主キー) を使用
  3. JoinTbl

ゲームの開始時に、ユーザーは何人かのプレイヤーを同じゲームに登録できます。したがって、同じゲームに 4 人のプレイヤーがいるとします。

これらの 4 人のプレーヤーを追加すると、次のplayersTblようになります。

ID | first name|
----------------
1  | p1        |
2  | p2        |
3  | p3        |
4  | p4        |

は次のようにgameTblなります。

ID | Date | Hour|
-----------------
1  |      |     |

だから私がやろうとしているのは、Table3意志が次のようになることです:

PlayerID | GameID|
------------------
1        | 1     |
2        | 1     |
3        | 1     |
4        | 1     |

1 人のプレーヤーで新しいゲームを開始するとき

playersTblプレーヤーを に、ゲームを に追加してgameTblいますが、3 番目のテーブルは次のようになります。

 PlayerID | GameID|
    ------------------
    1        | 1     |
    2        | 1     |
    3        | 1     |
    4        | 1     |
    5        | 2     |

より明確にするために、2番目のゲームに登録されているプレーヤーが最初のゲームに参加することを望んでいません..

4

2 に答える 2

2

使用INSERT INTO..SELECTステートメント、

INSERT INTO Table3(PlayerID, GameID)
SELECT  a.PlayerID, b.GameID
FROM    Table1 a CROSS JOIN Table2 b

クエリが行うことは、両方のテーブルからデカルト積を生成することです。

次の例を考えてみましょう。

表1

PlayerID
========
1
2
3

表2

GameID
=======
10
11
12

以下のクエリを実行すると、

SELECT  a.PlayerID, b.GameID
FROM    Table1 a CROSS JOIN Table2 b

次の結果が生成されます。

PlayerID    GameID
=========   ======
1           10
1           11
1           12
2           10
2           11
2           12
3           10
3           11
3           12
于 2013-03-10T15:27:57.813 に答える
0

次のように、INSERT INTO SELECT メソッドを利用できるはずです。

INSERT INTO Table3 (PlayerID, GameID) SELECT Table1.ID, Table2.ID FROM Table1, Table2
于 2013-03-10T15:47:04.597 に答える