2015-05-18 23 views
0

我想插入我的表,有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(); 
} 

请帮助提前致谢。

+0

请求和施主表之间是否有任何连接? – Sachu

+1

究竟是什么问题?什么是你的列类型?在D_City ='“'部分之前放一个空格。当然,你应该总是使用[参数化查询](http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/)。这种字符串连接对于[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)攻击是开放的。 –

+0

@SonerGönül我想检查已发送给特定捐赠者并在其账户中显示的请求总数。 –

回答

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 [email protected] and [email protected]" 
SqlCommand com = new SqlCommand(copy, MySQL); 
com.Parameters.Add("@RequestCity", requestCity); 
com.Parameters.Add("@DonorCity", donorCity); 
.... 

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

+0

之间没有直接的联系,但在这种情况下我怎么能写参数查询? –

+0

捐助者的故事和请求表没有直接的关系,这就是为什么我创建这张表只是为了保持记录。 –

+0

@IbtisamTanveer,这是不是工作?我看到你删除了接受的答案。 – christiandev

相关问题