计算查询ZF2中的百分比

时间:2013-07-12 08:46:18

标签: sql select zend-framework2

有没有办法计算表中两个值之间的百分比并选择它作为列?我知道这是可能的,但我想知道是否有可能在ZF2环境中具体。

我的ZF2应用程序中有一个select,它从db(SQL Server)中获取大量数据。此查询涉及我想按可用磁盘空间(表中的列)排序的表“库”。但我不希望它按可用空间的绝对数量排序,而是相对于总磁盘空间的百分比

所以我的意思是

libraries.freeSpace / libraries.totalSpace as 'percentage'

但在ZF2选择范围内。这是当前的查询:

$resultSet = $this->tableGateway->select(function(Select $select) use($report){
    $select->where('id = ' . $report[0]->customer)
    ->order('freeSpace', 'asc');
});

e:答案。

使用Zend \ Db \ Sql \ Expression模型。

在您的选择中添加列:

$select->columns(array(
    'percentage' => new Expression('cast(libraries.freeSpace') as float / cast.('libraries.totalSpace') as float', false);

1 个答案:

答案 0 :(得分:2)

您可以将表达式传递给Columns,不要忘记第二个参数,您需要将其设置为FALSE,以便在手动提供时自动为您添加表前缀。

use Zend\Db\Sql\Expression; 

$resultSet = $this->tableGateway->select(function(Select $select) use($report){
    $select->columns(array(
            'percentage' => new Expression('libraries.freeSpace / libraries.totalSpace')
        ), FALSE)
        ->where('id = ' . $report[0]->customer)
        ->order('freeSpace', 'asc')
    ;
});