程序没有按预期工作
问题描述:
这是我的程序,它应该从数据库中返回一篇文章,文章由我从我的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
文章与状态T1.IsDeleted = '1'
是百达返回(第一个),因为这是该SQL创立的第一个, ,我不知道为什么T1.IsDeleted = '0'
我在哪里clausule被忽略..
答
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查询的模样。不管怎么说,还是要谢谢你 –
取决于你有3个条件articlecode = searchparm OR值= searchparm并请将isDeleted = 0 - 也许你需要围绕这些括号使确保它做正确的组合? – BugFinder