[英]SQL RAND Query selecting all records and not using joined table
请有人通过我正在开发的网站继承的查询与我交谈。
该查询基于类别编号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
谢谢
首先,为了简化操作,将查询转换为较新的联接语法
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中的每个产品都有某种字段指示它属于哪个类别,使用此字段进行匹配,您的查询应该可以工作...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.