sql - Laravel Query Builder groupBy 结合关系

标签 sql laravel query-builder laravel-query-builder

考虑这两个具有一对多关系的简单表:

汽车

  • 编号
  • 品牌
  • 用户编号

用户

  • 编号
  • 用户名

用户可以拥有多辆车,每辆车属于一个用户。

对于每个汽车品牌,我想知道拥有大部分汽车的用户名 + 数量。

这可以通过一个 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/

相关文章:

sql - 在 sql 中插入查询或更新哪个更快?

mysql - 如何将 mysql 查询转换为 laravel 5 的查询生成器?

mysql - 获取同一个表中不存在关系(一对多)的计数

laravel - 从 redis 'incrby' 检索访问者计数并创建热门帖子

symfony - 我如何通过查询生成器在 symfony2 中使用完全外连接?

php - Laravel 查询生成器统计所有 25 到 35 岁的单例

SQL 递归计算日期

php - 通过一个查询为每个答案获取 10 条评论

sql - Firebird 外部表

laravel - 如何更改laravel中的日期语言?