2013-06-24 69 views
0

我想根據用戶輸入的值從兩個單獨但相關的表(它們之間有一個外鍵)獲取數據。如果該值被輸入到textBox11例如,我的SQL語句是:SQL - 根據用戶輸入的值從兩個相關表中檢索數據

SQLCommandText = "select Invoice_Name.Inv_Nu, Invoice_Name.Price, Invoice_Name.IDate, AddInfo.Case_Nu, AddInfo.PaperName, AddInfo.Page_Nu, AddInfo.Case_Type, AddInfo.Size from Invoice_Name full outer join AddInfo on Invoice_Name.L_Name = " + "'" + textBox11.Text + "'"; 

這似乎並不正常工作,我似乎無法找出原因。

兩個表我是:

Invoice_Name 
------------ 
Inv_Nu 
L_Name 
Price 
IDate 

AddInfo 
------- 
Inv_Nu 
Case_Nu 
PaperName 
PageNumber 
Case_Type 
Size 

我希望用戶進入L_Name和程序帶回兩個表,其中L_Name等於值中的所有信息。這裏的外鍵是來自Invoice_Name表的Inv_Nu。

測試數據:

Invoice_Name: 
Inv_Nu | L_Name | Price | IDate 
01064 | Rami Isleem | 215 | 19/6/2013 

AddInfo: 
Inv_Nu | Case_Nu | PaperName | Page_Nu | Case_Type | Size 
01064 | 100/20 | Alra'i | 21 | abc | 2x8 
+0

請告訴我們到底發生了什麼!你是否收到錯誤?結果集是否爲空?它不完整嗎?你在檢查案件嗎?並警告:這會打開很多潛在的SQL注入的東西! – sprinter252

+1

除非你能解釋爲什麼你有一個完整的外連接,否則將它改爲內連接。 –

+1

沒有解決您的問題,但仍然很重要:*使用參數化查詢,以避免SQL注入!!! * –

回答

2

你必須加入對Invoice_Name.L_Name = textBox11.TextInv_NU和過濾器2臺:

"select Invoice_Name.Inv_Nu, Invoice_Name.Price, Invoice_Name.IDate, 
     AddInfo.Case_Nu, AddInfo.PaperName, AddInfo.Page_Nu, 
     AddInfo.Case_Type, AddInfo.Size 
    from Invoice_Name 
    left join AddInfo on Invoice_Name.Inv_NU = AddInfo.Inv_NU 
    where Invoice_Name.L_Name = " + "'" + textBox11.Text + "'"; 

相反的FULL OUTER JOIN,使用LEFT JOIN因爲你過濾Invoice_Name行則加入AddInfo行。

+0

現在沒有任何回報。 – Scorps

+0

嘗試直接在數據庫中使用'L_Name'值執行它,你知道它應該返回結果。 – manji

+0

甚至直接從數據庫中獲得空結果集:S – Scorps

相關問題