我使用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个查询。
提前谢谢。
答案 0 :(得分:3)
我可能会读错了,但如果我正确理解你,你想得到这个帖子及其评论,但将其限制在最近的帖子......
如果那就是为什么不首先添加WHERE子句和子查询... p.id =(从发布中选择SELECT Max(id))
理论上,这应该将其过滤到输入的最新帖子。另一个选项是在最大日期时间选择是否存在这样的字段。