如何从两个不同的表复制数据并将提取的记录插入另一个表

时间:2015-05-18 10:39:43

标签: c# sql asp.net

我正在尝试在我的表中插入有3个字段的数据

 (1) sendReqID type int(PK)
 (2) RequestID type int (FK from table Request)
 (3) DonorID type int (FK table Donor)

我知道如何从一个表复制数据并插入另一个表但我想知道如何在表中插入数据,当我们必须从两个不同的表中提取值时。以下是我正在尝试的代码,无法将数据插入到我的表中。

public void Req_SendID()
{
    SqlConnection MySQL = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ToString());
    string copy = "insert into Send_Request(RequestID,DonorID) Select RequestID,DonorID from RequestID and DonorID from Donor where R_City='" + Session["BGroup"] + "' and" + "D_City='" + Session["city"] + "'";
    SqlCommand com = new SqlCommand(copy, MySQL);
    MySQL.Open();
    com.ExecuteNonQuery();
    MySQL.Close();
}

请提前帮助谢谢。

1 个答案:

答案 0 :(得分:1)

你需要join这两张桌子......

insert into Send_Request(RequestID,DonorID) 
    Select r.RequestID, d.DonorID 
    from RequestID r inner join Donor d ON r.R_City = d.D_City
    where R_City='" + Session["BGroup"] + "' and " + "D_City='" + Session["city"] + "'"

我假设关系如上。但是,请考虑 SQL Injection 攻击并查看参数化您的查询。

编辑:使用参数化查询

var requestCity = Session["BGroup"].ToString();
var donorCity = Session["city"].ToString();

"insert into Send_Request(RequestID,DonorID) 
        Select r.RequestID, d.DonorID 
        from RequestID r inner join Donor d ON r.R_City = d.D_City
        where R_City=@RequestCity and D_City=@DonorCity"
SqlCommand com = new SqlCommand(copy, MySQL);
com.Parameters.Add("@RequestCity", requestCity);
com.Parameters.Add("@DonorCity", donorCity);
....

但是,我刚刚看到你的评论,表之间没有关系,所以上面的实际查询是不正确的。