Почти =)
$prices = DB::table('prices')->select(DB::raw('min("price")'), 'name')->where('supplier', $request->supplier)->groupby('name')->get();
Вот в целом норм - только мне кажется лучше не брать в двойные кавычки, а просто min(price) as min_price
Я ошибся, не работает $prices = DB::table('prices')->select(DB::raw('min(price as min_price)'), 'oem')->groupby('name')->get();
Ну потому что взяли в скобки as
Ну и он не знает какой oem вам нужен
Вот так, работает $prices = DB::table('prices')->select(DB::raw('min("price")'), 'oem')->groupby('oem')->get();
Вот тут не совсем понял, как правильно сделать
DB::table('prices')->select(DB::raw('min(price) as min_price'), 'oem')->groupby('oem')->get();
Так работает, а вот так нет $prices = DB::table('prices')->select(DB::raw('min(price) as min_price'), 'oem', 'brand', 'name', 'count', 'cat_number', 'stock', 'image')->groupby('oem')->get();
Ну это совсем другая задача
Как же быть?)
оно не будет же работать так, пока у него все поля не будут с агрегатами же? 🧐
Либо группировать по всем нужным данным, либо использовать подзапросы
В мускуле при включенном режите каком-то - будет, в посгре - нет
Если посгрес - то можно оконные функции применять, а если нет - то скорей всего через subQuery
он же сейчас умрёт от слова "подзапрос")
DB::from('prices as p1')->select('p1.*')->addSelect( DB::from('prices as p1')->select(DB::raw('min(price)'))->where('p1.oem', 'p2.oem') )->get() - вот так попробуй, покажи результат
Call to undefined method Illuminate\Database\MySqlConnection::from()
Ну значит table('prices', 'p1')
stripos(): Argument #1 ($haystack) must be of type string, Illuminate\Database\Query\Builder given
->toSql() добавь после where
вот так?)) DB::table('prices as p1')->select('p1.*')->addSelect( DB::table('prices as p1')->select(DB::raw('min(price)'))->where('p1.oem', 'p2.oem') )->toSql()->get();
Обсуждают сегодня