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是的