我有一个表“帖子”,一个帖子可以有几个评论(外键关系)。我现在想要一个联接,为每个帖子提供最后一条评论(具有最高ID)。
使用“普通SQL”我会用这个:
SELECT p1.spread, p1.message, p1.id FROM posts AS p1, (SELECT
spread, MAX(id) AS maxid FROM posts GROUP BY spread) AS p2 WHERE
p2.spread = p1.spread AND p1.id = p2.maxid
我如何使用CDbCriteria或CActiveRecord的任何其他方法?谢谢你的帮助
答案 0 :(得分:0)
首先,您的查询非常复杂。您的查询结果将相同。
SELECT max(id) as id, spread, message
FROM posts
GROUP BY spread
现在使用CDbCriteria,您必须在相关的模型
中编写查询例如在你的情况下它的Posts.php(模型)
public function last_comment()
{
$criteria = new CDbCriteria;
$criteria->select = 'max(id) as id, spread, message';
$criteria->group = 'spread';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
希望它会对你有所帮助.. :)