db字段(GROUP_CONCAT)作为数组

时间:2012-08-25 22:10:36

标签: mysql arrays join group-concat

我的桌子..

文章字段:

  
      
  • ID
  •   
  • 名称
  •   

字段:

  
      
  • ID
  •   
  • 名称
  •   

article_cats 字段:

  
      
  • ID
  •   
  • 的article_id
  •   
  • CAT_ID
  •   

我有这个sql:

SELECT
  a.id AS article_id ,
  a.name AS article_name ,
  COUNT( c.id ) AS num_categories ,
  GROUP_CONCAT( c.name ) AS categorie_names
 FROM
  articles AS a
 LEFT JOIN
  article_cats AS ac
 ON
  ( a.id = ac.article_id )
 LEFT JOIN
  cats AS c
 ON
  ( ac.cat_id = c.id )
 GROUP BY
  a.id 

并提供此表结构:

db structure

我需要的是,在数组中获取类别ID和名称,因此categorie_names将是一个数组,每个类别包含字段cat_id和cat_name。

这可以用mysql吗?

1 个答案:

答案 0 :(得分:4)

在数据库数组中表示表。如果您希望数组格式的数据是将值存储在单独的临时表中的最佳方法。

article_id, category_id, category_name
1           1            Cat1
2           1            Cat1
3           2            Cat2
3           1            Cat1

或者您必须在group_concat

中使用连接
GROUP_CONCAT(cast(concat(c.id,\': \',c.name) AS char)SEPARATOR \', \') AS categorie_names

所以结果就像2:Cat2,1:Cat2。您可以拆分(首先使用','然后':')此值并检索ID和名称。