2014-03-05 105 views
0

我試圖完成的是查詢分類表中所有類別的數據,但也添加了一個「posts」屬性,列出所有的ID將該類別內的內容發佈到數組中。MySQL將來自多個表(外鍵)的數據合併到一個數組

數據庫表:

'categories' table 
+---------+----------+ 
|  id | title | 
+---------+----------+ 
|  100 | "categ1" | 
|  101 | "categ2" | 
|  102 | "categ3" | 
|  103 | "categ4" | 
+---------+----------+ 

'posts' table 
+---------+----------+----------+ 
|  id | title | category | 
+---------+----------+----------+ 
|  1 | "abc" | 100  | 
|  2 | "def" | 101  | 
|  3 | "ghi" | 100  | 
|  4 | "jkl" | 102  | 
+---------+----------+----------+ 

輸出目標:(json_encode,手動添加 '類' 到頂層)

{ 
    "categories": [ 
     { 
      "id": 100, 
      "title": "categ1", 
      "posts": [1, 3] (Post IDs of those in category 10) 
     } 
     { 
      "id": 102, 
      "title": "categ2", 
      "posts": [2] 
     } 
     { 
      "id": 103, 
      "title": "categ3", 
      "posts": [4] 
     } 
     { 
      "id": 104, 
      "title": "categ4", 
      "posts": [] 
     } 
    ] 
} 

在獲取類別的基本查詢是容易的,我可以沒有找到一種方法來根據帖子表和帖子類別/類別ID關係生成帖子屬性。

如果有不明之處,可以提供更多信息。

+0

'集團BY'類別。 – Lekhnath

回答

1

如果我正確理解你的問題,這聽起來像你正在尋找GROUP_CONCAT()

select c.id, c.title, group_concat(p.id) posts 
from categories c 
    left join posts p on c.id = p.category 
group by c.id 
+0

嗯,這正是我正在尋找的(數組短,但似乎我將不得不手動爆炸它,所以沒有問題)。謝謝! – Graham

相關問題