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     |

现在当我和一个玩家开始新游戏时

我将玩家添加到playersTbl,并将游戏添加到gameTbl,但现在第三张桌子看起来像

 PlayerID | GameID|
    ------------------
    1        | 1     |
    2        | 1     |
    3        | 1     |
    4        | 1     |
    5        | 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 回答