好的,这让我疯了,我需要编写一个SQL查询,从2个表中获取产品信息。第一个表'products'包含productId,productname,quantityperunit和unitprice。现在我可以单独搜索productname和categoryname,但是当我尝试将2结合起来时,我得到了疯狂的结果,这是查询:
"SELECT DISTINCT productId, productname, quantityperunit, unitprice FROM products pr,
categories ca WHERE pr.categoryID = ca.categoryID AND ProductName LIKE '%" + searchTerm + "%'
OR CategoryName LIKE '%" + searchTerm + "%'
原谅那里的java风格,这里的格式更好:
SELECT DISTINCT productId, productname, quantityperunit, unitprice FROM products pr,
categories ca WHERE pr.categoryID = ca.categoryID AND ProductName LIKE '%Tofu%'
OR CategoryName LIKE '%Tofu%'
任何帮助将不胜感激。
答案 0 :(得分:3)
我无法确定你的“疯狂骚扰”是什么意思,但我猜你的行数比预期多得多。 添加括号:
WHERE pr.categoryID = ca.categoryID AND (ProductName LIKE '%Tofu%'
OR CategoryName LIKE '%Tofu%')
答案 1 :(得分:1)
您的两个示例查询中的LIKE
不同。
LIKE '%Tofu%'
与LIKE 'Tofu'
非常不同。
%
的行为类似于通配符,因此LIKE '%Tofu%'
匹配Big chunk o' Tofu and stuff
,但LIKE 'Tofu'
与之匹配 - 它只匹配Tofu
。
你的意思是什么?
(另外,我同意提到你的人应该检查你的括号)