2013-06-24 42 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

相关问题