2012-09-08 76 views
0

我有一個關係數據庫以這種格式顯示多個類別笨

Table: posts 
Columns: post_id,post_title,post_content 

Table: categories 
Columns: category_id,category_name 

Table: posts_categories 
Columns: post_id,category_id 

帖子可以有多個類別,所以我把它們存儲在使用後和類別ID posts_categories,當我使用下面的查詢從數據庫中獲得的結果,只顯示最後一個類別,是否有可能顯示所有類別,否則我必須運行一個單獨的查詢,這裏是我的代碼。

$this->db->select("p.*,pc.*,c.*"); 
    $this->db->where('post_id', $id); 
    $this->db->from('posts AS p'); 
    $this->db->join('posts_categories AS pc', 'pc.post_id = p.post_id', 'inner'); 
    $this->db->join('categories AS c', 'pc.category_id = c.category_id', 'inner'); 
    $q = $this->db->get(); 

感謝您的任何幫助。

+0

[This answer](http://stackoverflow.com/a/276949/1415625)應該有所幫助。 'GROUP_CONCAT'是你需要的。 – David

+0

謝謝,我會研究它,目前它看起來令人困惑,我將如何執行上述代碼。 – user969068

+0

你可能會考慮使用'$ this-> db-> query()',而不是試圖用Active Record進行佈局。祝你好運! – David

回答

1

你沒有提到你實際選擇的字段。但是,您可以在SELECT p.title, c.category_name之後執行查詢(問題中提到)後,結果中應包含多行,其中包含帖子標題和該帖子的類別名稱。

現在如果你想要的話,你可以通過php中的帖子來分組這些類別,從數據庫結果建立一個新的數組。

+0

謝謝,好吧,我實際上增加了這種方式$ this-> db-> select(「p。*,pc。*,c。*」);代碼更新,但我沒有得到所有類別的後,只是最後一個。 – user969068

+0

@Dshah你可以將構建的查詢作爲一個字符串併發布嗎? –

+0

SELECT p。*,pc。*,c。* FROM(posts AS p)INNER JOIN posts_categories AS pc ON pc.post_id = p.post_id INNER JOIN categories AS c ON pc.category_id = c.category_id WHERE post_id ='5 ' – user969068