gpt4 book ai didi

MySQL 使用 Count、Group 和Where/Having 子句连接 3 个表

转载 作者:行者123 更新时间:2023-11-29 10:42:21 28 4
gpt4 key购买 nike

我有3张 table

TABLE ii_ProductCategory
-------------------
id title

TABLE ii_Product2Category
-------------------
categoryId productId

TABLE ii_Product
----------------
id minPrice

我想找到所有类别要么根本不包含在 ii_Product2Category 中,要么仅链接到 minPrice IS NULL 的产品。

这是我的尝试。我收到一个 GROUP BY ERROR。

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 排序,这样我就可以看到每个产品中的产品总数,无论它们是否为空。

最佳答案

不对非聚合列进行分组是没有意义的。

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 NOT NULL
GROUP BY cat.`id`, cat.`title`, prod.`minPrice`
HAVING COUNT(DISTINCT p2c.`categoryId`) = 0

关于MySQL 使用 Count、Group 和Where/Having 子句连接 3 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45242118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com