ZF2 sql计数具有不同值的行

时间:2013-10-23 11:16:09

标签: sql count zend-framework2

我正在开发zend框架2中的应用程序,需要从数据库表中获取一些计数值。 该表包含“active”和“blocked”列

的成员

我想知道会员总数以及活跃人数和被阻止会员人数。

请注意,表格中会有大量成员,因此“慢速解决方案”不是一种选择。

thanx求助!

1 个答案:

答案 0 :(得分:0)

使用这两列,您需要执行以下操作:

SELECT SUM(active) as nrActive, SUM(if(blocked = 'yes', 1, 0)) as nrBlocked FROM members;

在此示例中,“active”可以具有值0或1,对于阻塞我假设为“是”和“否”,这样您就有两种情况的示例。

在ZF2中,您可以使用Zend \ Sql

撰写查询
$sql = new \Zend\Db\Sql($dbAdapter);
$sql->from('members', array(
    'nrActive'  => new \Zend\Db\Sql\Expression('SUM(active)'),
    'nrBlocked' => new \Zend\Db\Sql\Expression('SUM(if(blocked = "yes", 1, 0))')
);

(免责声明:我这样写了这个,所以可能有拼写错误,仅举例)