2015-05-18 24 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

相關問題