顶部表WITH JOIN的LIMIT 1

时间:2011-03-21 20:41:04

标签: php mysql zend-framework select


我使用PHP,MySQL和Zend Framework。我有一些简单的关系表。

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个查询。

提前谢谢。

1 个答案:

答案 0 :(得分:3)

我可能会读错了,但如果我正确理解你,你想得到这个帖子及其评论,但将其限制在最近的帖子......

如果那就是为什么不首先添加WHERE子句和子查询... p.id =(从发布中选择SELECT Max(id))

理论上,这应该将其过滤到输入的最新帖子。另一个选项是在最大日期时间选择是否存在这样的字段。