【发布时间】:2015-02-15 01:22:22
【问题描述】:
我仍在研究 Yii 1.xx 中 CDbCriteria 的全部功能 - 我有一个相当复杂的 SQL 查询,我想将其转换为使用 CDbCriteria 格式和模型内的查询(如果这可以通过更复杂的查询。
我最初的尝试..
$criteria = new CDbCriteria;
$criteria->select = array(
't.classroom_id, title',
'COALESCE(COUNT(DISTINCT r.redeemed_code_id),0) AS totalRewards',
'COALESCE(COUNT(DISTINCT ocm.user_id),0) AS totalStudents',
'COALESCE(SUM(r.points),0) AS totalPoints'
);
任何人都可以使用以下查询建议解决此问题的最佳方法吗?建议任何建议谢谢..
SELECT
t.classroom_id,
title,
COALESCE ( r.classRewards, 0 ) AS totalRewards,
COALESCE ( r.classPoints, 0) AS totalPoints,
COALESCE ( COUNT(DISTINCT ocm.user_id), 0 ) AS totalStudents
FROM
organisation_classrooms t
LEFT JOIN ( select crc.classroom_id,
COUNT( DISTINCT crc.redeemed_code_id ) AS classRewards,
SUM( crc.points ) as classPoints
from classroom_redeemed_codes crc
JOIN organisation_classrooms t
ON crc.classroom_id = t.classroom_id
AND t.organisation_id = 37383
where crc.inactive = 0
AND ( crc.date_redeemed >= 1393286400
OR crc.date_redeemed = 0 )
group by crc.classroom_id ) r
ON t.classroom_id = r.classroom_id
LEFT OUTER JOIN organisation_classrooms_myusers ocm
ON t.classroom_id = ocm.classroom_id
WHERE
t.organisation_id = 37383
GROUP BY title
ORDER BY t.classroom_id ASC
LIMIT 10
【问题讨论】:
-
我认为这样复杂的查询最好不要使用 CDbCriteria。您可以尝试改用 CDbCommandBuilder
标签: php mysql yii yii-components