我想在 yii 查询中使用 criteria->group 但它给出了这样的错误
CDbCommand failed to execute the SQL statement: SQLSTATE[42S21]
目前我使用的是:
$criteria->group = 'reg.user_first_name';
$criteria->order = 't.inout_time';
当我只使用 order by then 时,它会像这样正常工作:
SELECT `t`.`attendant_id`, `t`.`user_id` FROM `attendance_master` `t`
LEFT JOIN registration_master reg on reg.ai_sync_id = t.user_id
WHERE (((t.well_master_id=:ycp0) AND (t.status=:ycp1)) AND (t.user_type_id=:ycp2)) AND (t.inout_time LIKE :time)
ORDER BY t.inout_time LIMIT 10.
Bound with :ycp0='1429082167', :ycp1='in', :ycp2='2', :time='2015-05-06%'
但是当我按条件添加分组时,会出现如下错误:
1060 Duplicate column name 'ai_sync_id'. The SQL statement executed was:
SELECT COUNT(*) FROM (SELECT * FROM `attendance_master` `t`
LEFT JOIN registration_master reg on reg.ai_sync_id = t.user_id
WHERE (((t.well_master_id=:ycp0) AND (t.status=:ycp1)) AND (t.user_type_id=:ycp2)) AND (t.inout_time LIKE :time)
GROUP BY reg.user_first_name) sq.
Bound with :ycp0='1429082167', :ycp1='in', :ycp2='2', :time='2015-05-06%'
我知道这是一个小问题,但我无法找到,因为我是 yii 的新手。
最佳答案
您不能按 reg.user_first_name
分组什么时候做SELECT t.attendant_id, t.user_id FROM ...
组字段必须在结果集中。
所以尝试一下:
SELECT `t`.`attendant_id`, `t`.`user_id`, reg.user_first_name FROM
如果你这样做了 GROUP BY
通常,您应该使用任何聚合函数(SUM
、COUNT
、MAX
...)。
关于php - criteria->group 不适用于 yii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078118/