0

面对一个问题,几个小时都没有得到提示。也许有人可以帮助我。

有以下显示畅销商品的查询。因此产品的状态(活跃与否)保存在 b.Article_Status 中(0=不活跃,1=活跃)。

我如何获取结果列表中目前在 productfamily 中没有活动产品的产品。但是,如果订购的旧产品(表 order_items 中也是如此)现在处于非活动状态且尚未订购活动的产品,则仍应显示该产品。

实际查询如下所示。已经资助了一个解决方案,该解决方案在订购了一次实际有效产品时有效,但上述案例仍然存在问题。

SELECT count( a.order_itemid ) AS numOrders, c.Product_ID, c.Product_Name, d.producer_name
FROM order_items a
LEFT OUTER JOIN product_article b ON b.Article_ID = a.order_itemid
LEFT OUTER JOIN product c ON b.Article_Productid = c.Product_ID
LEFT OUTER JOIN producer d ON c.Product_Producer = d.producer_id
GROUP BY c.Product_ID
ORDER BY `numOrders` DESC
4

1 回答 1

0

解决方案是 WHERE EXISTS 子查询

SELECT count( a.order_itemid ) AS numOrders, c.Product_ID, c.Product_Name, d.producer_name
FROM order_items a
LEFT OUTER JOIN product_article b ON b.Article_ID = a.order_itemid
LEFT OUTER JOIN product c ON b.Article_Productid = c.Product_ID
LEFT OUTER JOIN producer d ON c.Product_Producer = d.producer_id
WHERE EXISTS (SELECT * FROM product_article x WHERE c.Product_ID = x.Article_Productid AND x.Article_Status = 1)
GROUP BY c.Product_ID
ORDER BY `numOrders` DESC
LIMIT 5
于 2012-05-30T13:05:29.867 回答