我有3张桌子
products categories products_categories
------------ ------------- --------------------
product_id category_id product_id
product_title category_title category_id
每个产品都可以属于db模式显示的多个类别。 我加入了三个表格,以获得最后插入的三个产品的列表。
SELECT p.product_id,
p.product_title,
c.category_id,
c.category_title
FROM products p
INNER JOIN products_categories pc ON p.product_id = pc.product_id
INNER JOIN categories c ON pc.category_id = c.category_id GROUP BY p.product_id LIMIT 3
通过上述查询,我获得了产品,但产品属于第一个类别。
我的问题是,是否可以通过修改查询来获取每个产品所属的所有类别,在一行中连同产品信息?
或者唯一的方法是在获取列表以获取其类别时为每个产品执行另一个查询?
答案 0 :(得分:4)
你可以尝试:
SELECT p.product_id, p.product_title,
GROUP_CONCAT(c.category_title)
FROM products p
INNER JOIN products_categories pc ON p.product_id = pc.product_id
INNER JOIN categories c ON pc.category_id = c.category_id
GROUP BY p.product_id
请参阅 GROUP_CONCAT 语法here
答案 1 :(得分:1)
不要使用“分组依据”。然后在您的PHP代码组中手动执行product_id并收集所有类别。