【发布时间】:2014-07-22 13:18:13
【问题描述】:
在我的模型中我写道:
$criteria->select = ' ( select avg( IfNULL( TR.stars_rating_type_id , 0) ) as stars_rating_type_id from '.$tablePrefix.'tour_review as TR where TR.tour_id = T.id and TR.status = \'A\' ) as reviews_avg_rating ';
我得到错误:
活动记录“Tour”正在尝试选择无效列“(选择 avg( IfNULL( TR.stars_rating_type_id". 注意,该列必须存在于 表或者是一个带有别名的表达式。
The reason is that I add "IfNULL( ..., 0)" function in subquery to escape "null" in result set.
没有它我必须进行额外的验证并设置0以防null。
如果我使用 " SELECT ( select avg( IfNULL( TR.stars_rating_type_id, 0) ) as stars_rating_type_id..." 测试原始 sql,它可以正常工作,
这就是 yii 方面的问题。如何解决?
Yii 1.1.14
谢谢!
【问题讨论】:
-
你为什么不关注 $criteria->select = "column names" , $criteria->from = "tableName" ,你在 $criteria->select 下输入整个查询
标签: sql yii subquery criteria ifnull