如何将此复杂查询添加到CDbCriteria(Yii 1.x)

时间:2015-12-16 10:10:29

标签: mysql yii frameworks

我正在尝试运行以下查询,但是通过Yii自己的CDbCriteria运行它,以便它可以与使用Yii CDbCriteria功能的其他一些查询一起工作。

我不确定如何使用CDbCriteria执行以下SQL查询,任何人都可以提供帮助吗?

SELECT *
FROM
students t1
WHERE school_id = 1 
AND
(
    SELECT
        sum(points)
    FROM
        students t2
    WHERE
        t2.id <= t1.id
) >= 1000
ORDER BY id
LIMIT 1

1 个答案:

答案 0 :(得分:1)

如果因其他原因而不强制使用CDbCriteria, 当sql很复杂时,您可以使用findAllBySql(..)

$models=Students::model()->findAllBySql(
       "SELECT * FROM students t1
         WHERE school_id = 1 
         AND ( SELECT  sum(points)
         FROM    students t2
         WHERE    t2.id <= t1.id ) >= 1000
         ORDER BY id
         LIMIT 1" 
);