2011-03-21 109 views
0


我使用PHP,MySQL和Zend Framework。我有一些關係簡單的簡單表格。
頂部表WITH WITH JOIN的限制1

post_category - post (1:1) 
post - post_comments (1:M) 

,我需要選擇使用1個查詢意見的最後一個職位。這是我獲得的所有帖子詢問:

$select = $this->select() 
->setIntegrityCheck(false) 
->from(array('p' => 'post')) 
->join(array('pc' => 'post_category'), 'pc.id = p.category_id', 
    array('category_name' => 'name', 'category_name_key' => 'name_key')) 
->joinLeft('post_comment', 'p.id = post_comment.post_id', 
    array('comment_id' => 'id', 'created_by', 'comment', 'comment_date_creation' => 'date_creation')) 
->order('p.date_creation desc'); 

我不能添加->limit(1)原因查詢可以返回不止一行。我怎樣才能避免這種情況?我不想創建2個查詢。

預先感謝您。

回答

3

我可能讀這個錯,但如果我理解正確,你要得到那個職位和評論,但它限制在最近的帖子...

如果多數民衆贊成的情況下,爲什麼不加WHERE子句和子查詢第一個... p.id =(從文章中選擇最大(id))

理論上這應該將其過濾到最新輸入的帖子。另一種選擇是在最大日期時間選擇是否存在這樣的字段。

+0

謝謝你。它工作正常。 – pltvs 2011-03-21 21:08:17