mysql按列统计_MySQL 根据某一个字段怎么进行数据统计?

目前有一个订单表,表里有 status 和 manager_id 字段,manager_id 值为 1-3,status 的值为 1-10,表示对应不同的状态,目前我需要把每一个 manager_id 的不同状态的条数查出来,然后展示到一个页面上,本来想利用 sql 自带的 select count 来统计,但是 10 个不同的状态要查 10*3=30 次,对数据库开销太大,所以我把全部数据取出来后利用循环计算,但是总觉得这办法很蠢,请教各位 dalao 有没有更好的办法实现?

这是我之前写的代码,思路是把数据全取出来,然后循环判断累加,所有结果放到一个数组,条数不多,小于 1 万条。

$order = new OrderModel();

$lists = $order->getAllOrder();

for ($i = 1; $i <= 3; $i++) {

for ($j = 0; $j <= 6; $j++) {

$counts[$i][$j] = 0;

}

}

foreach ($lists as $list) {

if ($list['manager_id'] == 1) {

$counts[1][0] +=1;

if ($list['status'] == 1) {

$counts[1][1] += 1;

}

if ($list['status'] == 2) {

$counts[1][2] += 1;

}

if ($list['status'] == 3) {

$counts[1][3] += 1;

}

if ($list['status'] == 4) {

$counts[1][4] += 1;

}

if ($list['status'] == 5) {

$counts[1][5] += 1;

}

if ($list['status'] == 6) {

$counts[1][6] += 1;

}

}

if ($list['manager_id'] == 2) {

$counts[2][0] +=1;

if ($list['status'] == 1) {

$counts[2][1] += 1;

}

if ($list['status'] == 2) {

$counts[2][2] += 1;

}

if ($list['status'] == 3) {

$counts[2][3] += 1;

}

if ($list['status'] == 4) {

$counts[2][4] += 1;

}

if ($list['status'] == 5) {

$counts[2][5] += 1;

}

if ($list['status'] == 6) {

$counts[2][6] += 1;

}

}

if ($list['manager_id'] == 3) {

$counts[3][0] +=1;

if ($list['status'] == 1) {

$counts[3][1] += 1;

}

if ($list['status'] == 2) {

$counts[3][2] += 1;

}

if ($list['status'] == 3) {

$counts[3][3] += 1;

}

if ($list['status'] == 4) {

$counts[3][4] += 1;

}

if ($list['status'] == 5) {

$counts[3][5] += 1;

}

if ($list['status'] == 6) {

$counts[3][6] += 1;

}

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值