[英]Zend DB union count
我有2个选择,它们是联合的,如下所示:
$select->from ( array (
'A' => 'tableA'
), array (
'field1',
.....
) );
$select2->from ( array (
'B' => 'tableB'
), array (
'field1',
.....
) );
$select3 = $this->getAdapter()->select ()
->union(array($select1, $select2));
现在,基于工会,我想这样做:
$select3->reset ( 'columns' )->columns ( new Zend_Db_Expr ( 'COUNT(DISTINCT(field1))' ))
但我收到此错误:
没有为FROM子句指定表
从技术上讲这是正确的,但是我不希望从表中获得计数,而是希望从联合中的结果中获得计数。 我怎么做?
我最终像这样解决它:
$select3->reset ( 'columns' );//->columns ( new Zend_Db_Expr ( 'COUNT(DISTINCT(field1))' ))
$sql = $select->__toString();
$countQuery = <<<EOD
SELECT COUNT(DISTINCT(res.field1)) as total_rows FROM ($sql) as res
EOD;
$countResult = $this->getAdapter ()->query($countQuery)->fetchAll();
$count = 0;
if (! empty ( $countResult )) {
$count = $countResult [0] ['total_rows'];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.