我想我在opencart
中发现了一个bug,所以在精选模块中有一个自动完成框提示产品,但它似乎跳过了一大堆。在检查代码后,它看起来像这一切都归结到这个数据库查询:mysql喜欢的问题
SELECT *
FROM calcproduct p
LEFT JOIN calcproduct_description pd ON (p.product_id = pd.product_id)
WHERE pd.language_id = '1' AND LCASE(pd.name) LIKE 'ti %'
GROUP BY p.product_id
ORDER BY pd.name ASC LIMIT 0,20
当我手动运行查询,比如我有两个产品:
TI | 83 | Brand New
TI | 83 | Like New
,只找到其中之一,它也在为其他产品做这件事。有没有人有任何线索为什么发生这种情况?
它必须是查询中的相似部分,我从中取出了组,并且甚至是第一个where子句。我尝试将列从utf_8
更改为latin_1
。
您查询查找ti'后'空白。其中一行没有空白吗? 'LIKE'ti%''应该是'LIKE'ti%''? – 2012-02-29 16:57:14
如果您删除了“group by”子句,我的下一个建议是确保calcproduct记录和calcproduct_description记录均存在。即使您使用的是左连接,您的“where”子句也会包含对“pd.name”和pd.language的值的引用,因此每个表的记录都必须存在。 – aingram 2012-02-29 17:00:31
如果我喜欢'%',那么他们都显示出来,所以我不认为这是因为它是与类似的条款具体相关的东西,我相信 – DevTeamExpress 2012-02-29 17:34:23