2017-07-30 48 views
1

我想从我的访问数据库获取数据,并在Datagridview处显示数据。我的表是:针对4表的内部联接查询的语法

TABLE 1(AB)   TABLE 2(CD)   TABLE 3(EF)  TABLE 4(GH) 
-------------  ----------------- ------------- ------------------- 
SID SName CID TID TID TName Tprice  FID CID FCp  FPID FID FCp Fprice 

里面我是用检索在C#中的数据的查询是:

OleDbCommand command1 = new OleDbCommand(); 
command1.Connection = connection; 
command1.CommandText = "select T.TName, T.Tprice, P.FCp, P.Fprice from (([AB] S inner join [CD] T on S.TID = T.TID) (inner join [EF] C on S.CID = C.CID) inner join [GH] P on C.FID = P.FID where (S.SID = 2) "; 
OleDbDataReader myreader = command1.ExecuteReader(); 
while (myreader.Read()) 
{ 
    //DATA IS READ HERE 
} 

我正的错误是:

语法错误在JOIN表达

我想TName, Tprice, FCp(TABLE 4), Fprice作为我的输出。我做对了吗,还是有其他方法可以做到这一点。

回答

4

在你的from你有没有结束(第一个)的开括号。

除了固定括号是更具可读性,如果你跳线:

command1.CommandText = @"select T.TName, T.Tprice, P.FCp, P.Fprice 
         from (([AB] S 
         inner join [CD] T on S.TID = T.TID) 
         inner join [EF] C on S.CID = C.CID) 
         inner join [GH] P on C.FID = P.FID 
         where S.SID = 2"; 

(Access requires parentheseses)

+0

现在我在查询表达式得到错误语法错误(缺少操作员) –

+0

@NitishRanjan - 见更新 - 错过访问需要添加圆括号 –

+0

查询括号内的小改动应该在'from'之后开始而不是之前 –