我试图将几个表数据合并到一个查询中。我正在使用Yii框架(v1.15)。我是这样做的,这件事很好:
$command = Yii::app()->db->createCommand();
$command->select('something')->from('somewhere');
$command->union($sql);这会产生这样的结果:
从某地联盟中选择某物(选择.)
但是联合合并重复的行值。我需要使用UNION ALL组合所有的数据,但是我无法在文档中找到任何关于如何做到这一点的信息。
也许你们中的一些人,我怎么才能用yii数据库对象来做呢?谢谢
发布于 2014-11-27 15:15:13
在Yii 1.x.x的查询生成器中,不支持UNION ALL。您可以将其更改为:
Yii::app()->db->createCommand("SELECT something FROM somewhere UNION ALL({$sql})");另一种方法是在union()命令中重写CDbCommand和buildQuery()方法,或者通过继承CDbCommand创建unionAll()方法。
另一种脏方式是:
$sql=Yii::app()->db->createCommand()->select('something')->from('somewhere')->union("SELECT something FROM somewhere")->getText();相当于:
SELECT `something` FROM `somewhere` UNION ( SELECT something FROM somewhere)然后:
$sql= str_replace('UNION', 'UNION ALL', $sql);或使用正则表达式:
$command->text = preg_replace('/\sUNION\s/', ' UNION ALL ', $command->text);相当于:
SELECT `something` FROM `somewhere` UNION ALL ( SELECT something FROM somewhere)然后,通过createCommand()方法传递它。
https://stackoverflow.com/questions/27173662
复制相似问题