程序没有按预期工作

程序没有按预期工作

问题描述:

这是我的程序,它应该从数据库中返回一篇文章,文章由我从我的C#代码发送的文章代码选择,作为名为 _searchParam的参数,现在我遇到了这种情况我曾与例如100代码项目,并且该文章被删除了,后来我添加新的文章,它的代码设置为100, 所以我现在所用相同的代码库两篇文章,与不同的是他们中的一个将被删除 这就是为什么我说:程序没有按预期工作

AND T1.IsDeleted = 0; 

但过程returs第一篇文章与搜索代码(而这删除的一个),所以看起来李柯AND T1.IsDeleted = 0;被忽略,或者它不算..

程序在这里:

CREATE DEFINER=`root`@`localhost` PROCEDURE `ArticleGetArticle`(
    _searchParam varchar(50) 
) 
BEGIN 
SELECT T1.*,T2.*,T3.Value, T3.Description 
From articles as T1 LEFT JOIN barcodes as T2 ON T1.ArticleId=T2.ArticleId JOIN taxes as T3 ON T1.TaxId=T3.TaxId 
Where T1.ArticleCode=_searchParam OR T2.Value=_searchParam AND T1.IsDeleted = 0; 
END 

enter image description here

文章与状态T1.IsDeleted = '1'是百达返回(第一个),因为这是该SQL创立的第一个, ,我不知道为什么T1.IsDeleted = '0'我在哪里clausule被忽略..

+0

取决于你有3个条件articlecode = searchparm OR值= searchparm并请将isDeleted = 0 - 也许你需要围绕这些括号使确保它做正确的组合? – BugFinder

T1.ArticleCode=_searchParam OR T2.Value=_searchParam AND T1.IsDeleted = 0; 

这解释为

(T1.ArticleCode=_searchParam) OR (T2.Value=_searchParam AND T1.IsDeleted = 0); 

尝试加入自己的括号像这样:

(T1.ArticleCode=_searchParam OR T2.Value=_searchParam) AND T1.IsDeleted = 0; 
+0

我会接受的答案在7分钟内,这作品。我在八方SQL方面犯错误,从不在我的C#代码:/我需要学习很多关于SQL查询的模样。不管怎么说,还是要谢谢你 –