有人可以通过我正在开发的网站继承的查询来与我交谈。
查询将根据类别编号56返回5个产品的随机组。查询存在问题,因为它不会根据Web和产品存档条件上的产品限制选择。
AND p.product_OnWeb = 1
AND p.product_Archive = 0
未遵守查询中的上述行。相反,查询包括所有产品,即使它们被标记为p.product_Archive=1
(已存档)和p.product_OnWeb = 0
(不在线)
如果有人能指出我需要做出改变的地方,我将不胜感激。
完整查询是: -
SELECT c.prdt_cat_rel_Product_ID,
ROUND(RAND() * x.m_id) 'rand_ind'
FROM tbl_prdtcat_rel c,
tbl_products p,
(SELECT MAX(t.prdt_cat_rel_Cat_ID) 'm_id'
FROM tbl_prdtcat_rel t) x
WHERE c.prdt_cat_rel_Cat_ID = 56
AND p.product_OnWeb = 1
AND p.product_Archive = 0
ORDER BY rand_ind
LIMIT 3
三江源
答案 0 :(得分:0)
首先,为了使其更容易,请将查询转换为较新的连接语法
SELECT c.prdt_cat_rel_Product_ID, ROUND(RAND() * x.m_id) 'rand_ind'
FROM tbl_prdtcat_rel c,
JOIN tbl_products p ON p.??? = c.???
JOIN (
SELECT MAX(t.prdt_cat_rel_Cat_ID) 'm_id' FROM tbl_prdtcat_rel t
) x ON 1=1
WHERE c.prdt_cat_rel_Cat_ID = 56
AND p.product_OnWeb = 1
AND p.product_Archive = 0
ORDER BY rand_ind
LIMIT 3
你可以看到查询不知道如何从基于C的P中选择匹配记录,所以它全部抓取它们。你需要指定如何将tbl_prdtcat记录与tbl_product记录匹配(替换?? ?在上面有相应的字段)
我猜p中的每个产品都有某种字段,表明它属于哪个类别,使用此字段进行匹配,您的查询应该有效...