Database 具有Yii CDB准则的分组最大值
我有一个表“posts”,一个Post可以有几个注释(外键关系)。我现在想做一个连接,为每个帖子提供最后一条评论(ID最高) 对于“普通SQL”,我将使用以下方法: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
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,
));
}