2012-08-25 19 views
2

我的表...分貝場(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

我需要的是,讓類別編號和名稱在數組中,所以categorie_names將是一個數組,其中每個類別都有字段cat_id和cat_name。

這可能與MySQL?

回答

3

在數據庫數組中意味着表。如果希望以數組格式存儲數據,則最好的方法是將值存儲在單獨的臨時表中。

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