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 

そしてそれはこのテーブル構造を提供します:

db構造

必要なのは、配列内のカテゴリ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のようになります。この値をsplit(最初に'、'、次に':')して、IDと名前を取得できます。

于 2012-08-25T22:42:35.007 に答える