【发布时间】:2021-04-21 03:07:05
【问题描述】:
我在我的开发中使用 laravel,我有一个看起来像这样的数据库。
卖家表:
| id | name | position |
|---|---|---|
| 1 | john | supervisor |
| 2 | michael | supervisor |
| 3 | ved | area manager |
| 4 | menz | manager |
| 5 | jun | clerk |
卖家销售表:
| id | seller_id | month | Sales |
|---|---|---|---|
| 1 | 1 | january | 5000 |
| 2 | 1 | february | 10000 |
| 3 | 2 | january | 1000 |
| 4 | 2 | february | 1000 |
| 5 | 3 | february | 1000 |
在我的代码中,我想要完成的是按位置对卖家表进行分组。另外,我还需要统计有多少卖家从之前的销售中达到了 1000。在此示例中,示例输出如下所示。
结果:
| position | total count | has Reach 1000 sales from previous sale | has not Reach 1000 sales from previous sale |
|---|---|---|---|
| supervisor | 2 | 1 | 1 |
| area manager | 1 | 0 | 1 |
| manager | 1 | 0 | 1 |
| clerk | 1 | 0 | 1 |
我的问题是,是否可以单独使用查询来实现这一点?或者我真的需要为此添加额外的逻辑?目前,数据库已经使用一对多关系连接。我的示例查询如下所示
$seller = Seller::with(['sales' => function ($query)use ($dateForCondition){
$query->orderBy('date', 'desc')
->where('date', '<=', $dateForCondition)
->limit(2);
}])
如果可以单独使用查询,你能给我一些想法吗?如果单独使用查询是不可能的,我需要手动循环所有记录并添加一些条件和变量来按位置分组,我有数千条记录,我担心在这个过程中我可能会遇到一些限制。请帮忙谢谢。
【问题讨论】:
标签: mysql sql laravel eloquent group-by