使用产品信息在一行中获取产品类别

时间:2011-11-18 10:39:25

标签: php mysql sql

我有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

通过上述查询,我​​获得了产品,但产品属于第一个类别。

我的问题是,是否可以通过修改查询来获取每个产品所属的所有类别,在一行中连同产品信息?

或者唯一的方法是在获取列表以获取其类别时为每个产品执行另一个查询?

2 个答案:

答案 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并收集所有类别。