2

我的桌子..

文章字段:

  • 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 

它提供了这个表结构:

数据库结构

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

这可以用 mysql 吗?

4

1 回答 1

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 和名称。

于 2012-08-25T22:42:35.007 回答