简体   繁体   English

zend framework 2 Db选择列分组

[英]zend framework 2 Db Select columns Grouping

I need a query to my database 我需要查询数据库

This is my database data 这是我的数据库数据

CREATE TABLE IF NOT EXISTS `order_main` (
`om_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`om_raren` varchar(20) NOT NULL COMMENT 'serial number',
`om_total` int(11) NOT NULL COMMENT 'money',
`om_freight` int(11) NOT NULL COMMENT 'freight',
`om_amount` int(11) NOT NULL COMMENT 'money + freight',
`om_status` int(11) NOT NULL COMMENT 'Order Status:1)Unpaid 2)Paid 3)Cancel 4)Payment     
success,
`om_created` datetime NOT NULL COMMENT 'create time',
PRIMARY KEY (`om_id`)
)

My needs,Obtain 4 kinds of data 我的需求,获取4种数据

1) Not specified 'om_status' , 'om_created' = 2013-01 Items Count 1)未指定'om_status','om_created'= 2013-01项目计数

2) Not specified 'om_status' , 'om_created' = 2013-01' sum('om_total') 2)未指定'om_status','om_created'= 2013-01'sum('om_total')

3) 'om_status' = 4 , 'om_created = 2013-01' Items Count 3)'om_status'= 4,'om_created = 2013-01'项目计数

3) 'om_status' = 4 , 'om_created' = 2013-01' sum('om_total') 3)'om_status'= 4,'om_created'= 2013-01'sum('om_total')

First and second, and I know how to write,like this: 首先,第二,我知道怎么写,像这样:

$select = $this->tableGateway->getSql()->select();
$select->columns(array(
            'Nub' => new \Zend\Db\Sql\Expression('COUNT(*)'),
            'Price' => new \Zend\Db\Sql\Expression('sum(`om_total`)'),
        ));
$select->where("DATE_FORMAT(`om_created`, '%Y-%m')  = 2013-01");
$row = $this->tableGateway->selectWith($select)->toArray();

But the third and fourth, I don't know how clueless adding that Sql Query, i want 4 kinds of results in the same sql string 但是第三和第四,我不知道添加那个Sql查询是多么愚蠢,我想要在同一个sql字符串中有4种结果

Thanks 谢谢

Just add another where() : 只需添加另一个where()

...
$select->where("DATE_FORMAT(`om_created`, '%Y-%m')  = 2013-01");
$select->where("om_status = 4");
...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM