考虑这两个具有一对多关系的简单表:
汽车
- 编号
- 品牌
- 用户编号
用户
- 编号
- 用户名
用户可以拥有多辆车,每辆车属于一个用户。
对于每个汽车品牌,我想知道拥有大部分汽车的用户名 + 数量。
这可以通过一个 SQL 查询实现吗?我正在寻找使用 Laravel 查询生成器执行此操作的最优雅的方法吗?
DB::table('cars')->groupBy('brand');
到目前为止我有什么...
谢谢!
最佳答案
希望对您有所帮助。
$sub = Car::join('users', 'users.id', '=', 'cars.user_id')
->groupBy('cars.brand', 'users.id', 'users.username')
->selectRaw('users.id,
users.username,
cars.brand,
COUNT(cars.rand) AS brand_amount');
$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
->mergeBindings($sub->getQuery())
->groupBy('brand')
->select('brand', 'username', DB::Raw('MAX(brand_amount) AS amount'))
->get();
关于sql - Laravel Query Builder groupBy 结合关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774216/