skip to Main Content

I am using Laravel 8 and using Raw Query. I have added query to fetch count of product by manufacturers but facing below error.

SQLSTATE[42000]: Syntax error or access violation: 1055 'ngtonlin_superadmin.m.manufacturerid'
isn't in GROUP BY (SQL: select `m`.`manufacturerid` as `id`, `m`.`name`, `m`.`logowidth`,
`m`.`logoheight`, count(p.id) as total from `products` as `p` inner join `manufacturer` as `m` on
`m`.`manufacturerid` = `p`.`manufacturer_id` group by `p`.`manufacturer_id` order by `total` desc limit 5)

and my query is

DB::table('products as p')
        ->select('m.manufacturerid as id','m.name','m.logowidth','m.logoheight', DB::raw('count(p.id) as total'))
        ->join('manufacturer as m','m.manufacturerid','=','p.manufacturer_id')
        ->groupBy('p.manufacturer_id')
        ->orderBy('total', 'DESC')
        ->limit(5)
        ->get();

2

Answers


  1. I think you need to use

    ->groupBy('m.manufacturerid', 'm.name','m.logowidth','m.logoheight')
    

    Not

    ->groupBy('p.manufacturer_id')
    

    Because, I think p.manufacturer_id = m.manufacturerid, and you use m.manufacturerid in the select part.

    Login or Signup to reply.
  2. Try this:
    DB::table(‘products as p’)->join(‘manufacturer as m’,’m.manufacturerid’,’p.manufacturer_id’)->selectRaw(‘m.manufacturerid as id’)->selectRaw(‘m.name’)->selectRaw(‘m.logowidth’)->selectRaw(‘m.logoheight’)->selectRaw(‘count(p.id) as total’)->groupBy(‘p.manufacturer_id’)->orderBy(‘total’, ‘DESC’)->limit(5)->get();

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search