我有一个如下所示的sql查询,我想在2中创建这个查询。
(按镇从exp_personal_data ORDER选择id作为id ) UNION (从pd_unregister选择id作为id )
我希望有工会,并添加到这个限制,订单等。
$this->_select->合二为一($selectPdContest,'union‘);
当我像这样写查询的时候。
$this->_select->合并($selectPdContest,'union all')->limit('10);
查询如下:
(按城镇限制从exp_personal_data ORDER中选择id AS id ) UNION (从pd_unregister选择id作为id )
限制只添加到第一选择。我希望限制会像这样加起来。
(从exp_personal_data ORDER BY城镇选择id作为id ) UNION (从pd_unregister选择id作为id )限制为10
如何在Zend框架2中实现这一点?
发布于 2014-09-14 13:37:00
加上这些行就行了,
$select1 =NewSelect1();$select1->合二为一($selectPdContest,'union‘);
$select3 =NewSelect3();$oneTwo =$select3->从(‘sub’=> $select1)->limit(10);
发布于 2014-08-01 14:40:21
解决方案1(简单):
$adapter = $this->tableGateway->getAdapter();
$resultSet = $adapter->query("(SELECT user_id AS id FROM user ORDER BY id) UNION (SELECT account_id AS id FROM account) LIMIT 10",$adapter::QUERY_MODE_EXECUTE);
print_r($resultSet->toArray());die;解决方案2(复杂):
use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Select;
//sql query first part
$adapter = $this->tableGateway->getAdapter();//the db connection adapter
$select = new Select('user');
$select->columns(array('id' => 'user_id'));
$select->order('id');
$sql = new Sql($adapter);
$statement = $sql->getSqlStringForSqlObject($select);
//sql query second part
$select2 = new Select('account');
$select2->columns(array('id' => 'account_id'));
$sql = new Sql($adapter);
$statement2 = $sql->getSqlStringForSqlObject($select2);
//combine the two statements into one
$unionQuery = sprintf('%s UNION %s','('.$statement = $sql->getSqlStringForSqlObject($select).')',
'('.$statement2 = $sql->getSqlStringForSqlObject($select2).') LIMIT 10');
//execute the union query
$resultSet = $adapter->query( $unionQuery, $adapter::QUERY_MODE_EXECUTE);
print_r($resultSet->toArray());die;https://stackoverflow.com/questions/25081555
复制相似问题