【发布时间】:2018-11-02 12:16:41
【问题描述】:
在 Laravel 中,查看我编写的代码但它不正确,所以我需要帮助:
public static function ServiceNo($service,$fltno,$type)
{
$res = DB::table('tbname')
->select(DB::raw('count(distinct(nextSvr)) as svr'))
->where(['fltno'=>$fltno,'mtype'=>$type,'serviceType'=>$service])
->get();
foreach($res as $r){
$cnn = $r->svr;
}
return $cnn;
}
上面的代码,只会计算不同的nextsvr,但是,我想要更好地解释如下:从上面看,前三个7被计为1,接下来的三个系列是1,等等,最后服务类型 A 的总数将是 9 个服务。拜托,我需要这方面的帮助。
【问题讨论】:
-
我明白你的意思,但是数据库语言应该如何区分 1 和 1?您的表中没有其他可以提供帮助的字段吗?
-
@MattJameson:谢谢看看数据库的报告,我想要的是:如果我像这样手动计数,我看到的第一个系列是 7 计为 1,下一个系列是 9,即 1,然后是 1,计为 1,依此类推。最后,一切都将总结为 9。如果这是手动的,那么可以编写代码来解决这个问题。我在做什么错我现在的代码。
-
序列总是在 3 中吗?
-
不,有时可能是 4 个,甚至 10 个
-
如果我对数据进行排序或以不同的顺序插入会发生什么。您不能依赖插入顺序。如果您要批量创建它们,请添加一个批次 ID,您可以在每个新批次上递增该 ID。没有问题,因为您可以按批次 ID 分组计数。计算这一点的唯一方法是从表中提取每条记录,并在数据从 7 变为其他值时使用开关手动计算它们,这只是性能方面的糟糕,而不是计算所有可能出错的地方。如果他们是按天添加一个日期字段和组。