Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OleDB连接语法不正确_C#_Select_Oledb_Where - Fatal编程技术网

C# OleDB连接语法不正确

C# OleDB连接语法不正确,c#,select,oledb,where,C#,Select,Oledb,Where,我最近问了一个关于StackOverflow()的问题,关于一个查询语句在MySQL中不起作用。我现在遇到了一个非常类似的问题,这次使用的是OleDB,我试图使用一个连接来包括0作为条目的字段,但结果不是选择表中的每个字段 上述问题中发布的新外观MySQL查询,作为接受的答案,工作顺利。然而,我编写的OleDB的对应项却几乎没有这样做。这有点混乱,因为表的命名不是很好(我没有创建这个数据库),而且我得到了一个简单的语法错误 myQuery.CommandText = "SELECT s.scm_

我最近问了一个关于StackOverflow()的问题,关于一个查询语句在
MySQL
中不起作用。我现在遇到了一个非常类似的问题,这次使用的是
OleDB
,我试图使用一个连接来包括
0
作为条目的字段,但结果不是选择表中的每个字段

上述问题中发布的新外观
MySQL
查询,作为接受的答案,工作顺利。然而,我编写的OleDB的对应项却几乎没有这样做。这有点混乱,因为表的命名不是很好(我没有创建这个数据库),而且我得到了一个简单的语法错误

myQuery.CommandText = "SELECT s.scm_num, s.scm_name, c.cr3_text, q.qsp_value, s.scm_bprefix, s.scm_nxbnum FROM qspreset q INNER JOIN sdccomp s LEFT OUTER JOIN cntref3 c ON s.scm_cntref3=c.cr3_id AND q.qsp_relat=s.scm_invtype AND q.qsp_what=13";

我在这里查询另一个表以及
左外部联接中涉及的两个表,我相信这就是我犯错误的地方

连接条件需要与连接一起使用

myQuery.CommandText = 
"SELECT s.scm_num, s.scm_name, c.cr3_text, q.qsp_value, s.scm_bprefix, s.scm_nxbnum    
FROM qspreset q   
INNER JOIN sdccomp s 
      on q.qsp_relat = s.scm_invtype AND q.qsp_what = 13  
LEFT OUTER JOIN cntref3 c 
      ON s.scm_cntref3 = c.cr3_id";
q、 qsp_what=13可以移动到何处

我碰巧喜欢这种款式
在MSSQL T-SQL和一些具有大量联接的查询的情况下,我通过将where条件向上移动到联接中,获得了更有效的查询计划。过滤发生得早,而不是最后一次


如果您不相信可以在联接中输入硬值,请参见内部联接sdccomp s

关于什么?您必须指定链接哪些列。并且
q.qsp\u what
应该只在where中。接得好。@Luaan你确定它在连接中也不起作用吗。我用TSQL就是这样做的,它可以在T-SQL中工作,但它肯定属于where,它不是连接条件,而是一个简单的过滤器。T-SQL相当宽容-其他语言可能不太喜欢这样的东西。您要加入的表上的条件属于该联接的
on
子句-
qspreset
是您要加入的表,因此该表上的条件只属于
where
子句。@markbanister only?我添加了一个SQLFIDLE MySQL 5.6,表示可以在连接中添加硬值。