【发布时间】:2017-07-21 16:02:55
【问题描述】:
我有 3 张桌子
TABLE ii_ProductCategory
-------------------
id title
TABLE ii_Product2Category
-------------------
categoryId productId
TABLE ii_Product
----------------
id minPrice
我想查找所有类别要么根本不包含在 ii_Product2Category 中,要么只链接到 minPrice IS NULL 的产品。
这是我的尝试。我收到 GROUP BY 错误。
SELECT COUNT(DISTINCT p2c.`categoryId`) as "ProdCount",
cat.`id`,
cat.`title`,
prod.`minPrice`
FROM `ii_ProductCategory` cat
LEFT JOIN `ii_Product2Category` p2c
ON p2c.`categoryId` = cat.`id`
LEFT JOIN `ii_Product` prod
ON p2c.`productId` = prod.`id`
WHERE prod.`minPrice` IS NULL
AND COUNT(DISTINCT p2c.`categoryId`) = 0
GROUP BY cat.`id`
我尝试将 prod.minPrice IS NULL 移动到加入的 HAVING 中,但这也不起作用。我还希望能够删除AND COUNT(DISTINCT p2c.categoryId) = 0 并按 ProdCount 排序,这样我就可以查看每个产品的总数,无论它们是否为空。
【问题讨论】:
-
将“AND”更改为“HAVING”并将该行移至最底部