Php 带union的Yii范围

Php 带union的Yii范围,php,yii,Php,Yii,调用actionIndex() 它将表中的数据显示为Select*FROM store 我将如何编辑范围?或者有没有其他方法可以做到这一点,而不使用范围 SELECT j.* FROM ( ( SELECT * FROM `make` AS v JOIN `ads` AS a ON (v.id=a.make_code) GROUP BY v.make

调用
actionIndex()

它将表中的数据显示为
Select*FROM store

我将如何编辑
范围
?或者有没有其他方法可以做到这一点,而不使用范围

SELECT j.* FROM 
    (
        (
            SELECT *
            FROM `make` AS v
            JOIN `ads` AS a
            ON (v.id=a.make_code)
            GROUP BY v.make
        )
        UNION
        (
            SELECT *
            FROM `store` AS d
            JOIN `make` AS v
            ON (v.id=d.make)
            GROUP BY d.make
        )
    ) AS j GROUP BY j.make
我试过了,但出现了一个错误

public function Scope(){
    return array(
        '_with'=>array(
            'alias' => 'd',
            'select'=>array('j.* 
                            (
                                ( 
                                    SELECT *
                                    FROM `make` AS v
                                    JOIN `ads` AS a
                                    ON (v.id=a.make_code)
                                    GROUP BY v.make
                                )
                                UNION
                                (
                                     SELECT *
                                     FROM `store` AS d
                                     JOIN `make` AS v
                                     ON (v.id=d.make)
                                     GROUP BY d.make
                                )
                            ) AS j'
            ),
            'group'=>'j.make',
        )
    );
}
这是错误消息

CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: 
Syntax error or access violation: 1064 You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near
'(
    (
        SELECT *' at line 2. The SQL statement executed was: SELECT j.*
            (
                (
                    SELECT *
                    FROM `make` AS v
                    JOIN `ads` AS a
                    ON (v.id=a.make_code)
                    GROUP BY v.make
                )
                UNION
                (
                    SELECT *
                    FROM `store` AS d
                    JOIN `make` AS v
                    ON (v.id=d.make)
                    GROUP BY d.make
                )
            ) AS j FROM `store` d WHERE d.pending!="1" GROUP BY j.make sq 

问题是您没有从设置
。您还可以从
中创建一个sql视图,并使用它。它使你的代码更干净

public function Scope(){
    return array(
        '_with'=>array(
            'alias' => 'd',
            'select'=>array('j.*'); 
            'from'  => '(
                                ( 
                                    SELECT *
                                    FROM `make` AS v
                                    JOIN `ads` AS a
                                    ON (v.id=a.make_code)
                                    GROUP BY v.make
                                )
                                UNION
                                (
                                     SELECT *
                                     FROM `store` AS d
                                     JOIN `make` AS v
                                     ON (v.id=d.make)
                                     GROUP BY d.make
                                )
                            ) AS j',
            'group'=>'j.make',
        )
    );
}

这个查询正常吗?@Dinistro是的