【发布时间】:2018-04-12 02:37:04
【问题描述】:
事情就是这样。
我有一个查询,它带来了我数据库中的所有产品。这些产品属于一个或多个类别。所以我有 3 张桌子。
- 产品表
- 类别表
- 保存这两者之间关系的表。
我在获取产品时使用 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
谁能帮帮我?
【问题讨论】:
-
那么 PHP 是从哪里来的?
-
已经移除了 PHP 标签。
-
这里有一些示例数据会很好。顺便说一句,您的查询无效,因为您正在执行
SELECT p.*而仅按id分组。
标签: mysql