2011-03-21 69 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