Database 具有Yii CDB准则的分组最大值

Database 具有Yii CDB准则的分组最大值,database,yii,Database,Yii,我有一个表“posts”,一个Post可以有几个注释(外键关系)。我现在想做一个连接,为每个帖子提供最后一条评论(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.max

我有一个表“posts”,一个Post可以有几个注释(外键关系)。我现在想做一个连接,为每个帖子提供最后一条评论(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

我将如何使用CDBC标准或任何其他CActiveRecord方法来实现这一点?首先,感谢您的帮助,您的查询非常复杂。。您的查询结果将与此相同

SELECT max(id) as id, spread, message 
    FROM posts
    GROUP BY spread
现在,使用CDBC标准,您必须在相关的模型中编写查询

例如,在您的案例中,它的Posts.php(model)


希望它能帮助你……)

谢谢你的回答,但是你建议的查询给了我正确的id和传播,但没有给id的相关信息。
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,
    ));
}