Ich arbeite immer noch die gesamte Funktionalität von CDbCriteria in Yii 1.xx - Ich habe eine ziemlich komplexe SQL-Abfrage, die ich in das CDbCriteria-Format mit Abfragen innerhalb eines Modells (wenn dies möglich ist, mit einer komplexeren Abfrage.Konvertieren Sie diese Abfrage in CDbCriteria-Format in Yii
Mein erster Versuch dazu ..
$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'
);
Kann jemand empfehlen, den besten Weg, um dies zu realisieren Sie die folgende Abfrage verwenden? Jede Beratung wird durch empfohlen ..
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
Ich denke, es ist besser, nicht CDbCriteria für eine solche komplexe Abfragen zu verwenden. Sie können versuchen, CDbCommandBuilder anstelle – Gihan