gpt4 book ai didi

MySQL 中的条件

转载 作者:行者123 更新时间:2023-11-29 13:27:36 24 4
gpt4 key购买 nike

几个小时以来,我一直在用这个问题把头撞在砖墙上,并认为我可以在这里碰碰运气。

我正在处理一个查询,该查询根据类别和类别评级返回产品。

简化的架构如下所示:

产品
id
姓名
价格

类别
id
名称

产品类别
产品ID
类别_id
评分(0 - 5)

我目前的查询如下:

SELECT 
`products` . *, products_categories.*
FROM
`products`
JOIN
`products_categories` ON (`products`.`id` = `products_categories`.`product_id`)
WHERE
`products_categories`.`category_id` IN ('5' , '24', '41')
AND `products_categories`.`rating` > 1
AND `products`.`enabled` = 1
HAVING count(distinct (products_categories.category_id)) = 3
ORDER BY `amount` ASC
LIMIT 9 OFFSET 0

查询的第一部分是选择属于这 3 个类别的所有产品,效果很好,但是,我遇到的问题是评级部分。

如果类别的评级为 1 或更高,我需要查询来选择属于这 3 个类别的所有产品。按照目前的情况,查询仅对返回虚假结果的最后一个类别的评级进行操作。

任何意见都将不胜感激,即使它只是正确方向上的一个点。

干杯。

最佳答案

您需要一个 GROUP BY 子句,以便 COUNT() 按产品进行计数,而不是一次计算所有内容。

SELECT 
`products` . *, products_categories.*
FROM
`products`
JOIN
`products_categories` ON (`products`.`id` = `products_categories`.`product_id`)
WHERE
`products_categories`.`category_id` IN ('5' , '24', '41')
AND `products_categories`.`rating` > 1
AND `products`.`enabled` = 1
GROUP BY products.id
HAVING count(distinct (products_categories.category_id)) = 3
ORDER BY `amount` ASC
LIMIT 9 OFFSET 0

关于MySQL 中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19916555/

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