gpt4 book ai didi

mysql - 过滤产品的某一类别,但带上过滤后产品的所有类别

转载 作者:行者123 更新时间:2023-11-29 18:15:52 25 4
gpt4 key购买 nike

事情是这样的。

我有一个查询,其中包含我数据库中的所有产品。这些产品属于一个或多个类别。所以我有 3 张 table 。
- 产品表
- 类别表
- 保存这两者之间关系的表。

我在获取产品时使用 GROUP_CONCAT 来获取产品所属的所有类别的名称,并且效果很好。我得到了我期望的结果。

问题出在我过滤某一类别时。然后 GROUP_CONCAT 不再起作用,它只带来所需类别的产品,而不是该产品所属的所有类别。

这是当我不过滤特定类别时的查询。

SELECT p.*, GROUP_CONCAT( c.title SEPARATOR ', ') as category
FROM products p
INNER JOIN products_categories_relation pcr ON pcr.product_id = p.id
INNER JOIN categories c ON pcr.category_id = c.id
WHERE p.status = 1
GROUP BY p.id
ORDER BY p.name ASC
LIMIT 16
OFFSET 0

这是我过滤特定类别时的查询:

SELECT p.*, GROUP_CONCAT( c.title SEPARATOR ', ') as categories
FROM product p
INNER JOIN products_categories_relation pcr ON pcr.product_id = p.id
INNER JOIN categories c ON pcr.category_id = c.id
WHERE p.status = 1
AND pcr.category_id = 27
GROUP BY p.id
ORDER BY p.name ASC
LIMIT 16
OFFSET 0

有人可以帮我吗?

最佳答案

你可以试试这个

SELECT p.*, GROUP_CONCAT( c.title SEPARATOR ', ') as categories
FROM product p
INNER JOIN products_categories_relation pcr ON pcr.product_id = p.id
INNER JOIN categories c ON pcr.category_id = c.id
WHERE p.status = 1
AND exists( select * from products_categories_relation where products_categories_relation.category_id = 27 and products_categories_relation.product_id = p.id )
GROUP BY p.id
ORDER BY p.name ASC
LIMIT 16
OFFSET 0

关于mysql - 过滤产品的某一类别,但带上过滤后产品的所有类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47026709/

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