我想在Same Query中使用WhereIn和Groupby来获取Result.
我试过这个:
$loadids=explode("#@*",$reciptdet->loading_id);
$loadingdatas=DB::table('loading')->groupBy('vehicle_no')->whereIn('id',$loadids)->get();
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
SQLSTATE [42000]:语法错误或访问冲突:1055'sbrtpt.loading.id'不在GROUP BY中(SQL:select*from loading其中id为(14,15,16)group by vehicle_no)
$search_alls=
DB::table('a16s as A')
->select('A.id')
// ->select('A.*')
->addSelect(DB::raw('SUM(CASE WHEN B.approve = 1 ELSE 0 END) as Yshow'))
->leftjoin('a16s_likes as B', function($join) {
$join->on('A.id', '=', 'B.p_id');
})
->groupBy('A.id')
->get();
Run Code Online (Sandbox Code Playgroud)
当我使用上面的 select('A.id') 时效果很好。
但是当我使用 select('A.*') 选择所有 A 列时,出现错误
SQLSTATE[42000]: Syntax error or access violation: 1055 'employee.A.name' isn't in GROUP BY
Run Code Online (Sandbox Code Playgroud)
PS:employee是我的数据库名称A表上的列是
id name ....
1 john
2 mary
3 susan
Run Code Online (Sandbox Code Playgroud)
如何通过 leftjoin 选择所有列?A.id 列与 B.p_id 列是一对多关系。
我想根据从表投票中获取的product_id来获取多少数据。在laravel上,此查询无法正常运行,但是当我在mysql中尝试运行时,它运行正常吗,是否还有其他解决方案?
这是通过mysql成功执行的查询:
select count(product_id) as total, `v`.*, `p`.`name` from `votes` as `v` left join `products` as `p` on `p`.`id` = (select p1.id from products as p1 where v.product_id = p1.id ) group by v.product_id
Run Code Online (Sandbox Code Playgroud)
这是我使用查询生成器使用的关于laravel的查询:
$count = DB::table('votes as v')->leftJoin('products as p',function($join){
$join->on('p.id','=',DB::raw('(select p1.id from products as p1 where v.product_id = p1.id )'));
})->select(DB::raw('count(*) as total'),'v.*','p.name')->groupBy('v.product_id')->get();
dd($count);
Run Code Online (Sandbox Code Playgroud)
我得到了这个错误:
“SQLSTATE [42000]:语法错误或访问冲突:1055 'lookbubbledrink.v.id'不是在GROUP BY(SQL:SELECT COUNT( )为总,
v
。,p
。name
从votes
作为v
左加入products
如p
上 …
我在其他问题上尝试过解决方案,但这并没有解决我的问题.我严格要求从真实到虚假.使用的模式
'modes' => [
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'
]
Run Code Online (Sandbox Code Playgroud)
同样.但我得到了同样的错误.
$orders = Order::orderBy('id', 'desc')->groupBy('order_id')->get();
dd($orders);
Run Code Online (Sandbox Code Playgroud)
这会引发错误语法错误或访问冲突:1055'my_db.orders.id'不在GROUP BY中(SQL:按orders
组order_id
顺序选择*来自id
desc)
(我使用的是Laravel 5.6)
我正在尝试获取一些数据,但我只是收到此错误
SQLSTATE[42000]:语法错误或访问冲突:1055 'ms_mascotas.ms_razas.id' 不在 GROUP BY 中(SQL:select
ms_razas.id
,ms_razas.nombre
,ms_mascotas.raza_id
,ms_mascotas.id
fromms_mascotas
inner joinms_razas
onms_razas.id
=ms_mascotas.raza_id
wherems_razas.tipo_animal_id
= 1 group byms_mascotas.raza_id
)”
我的查询是这样的
$data=Mascota::select("ms_razas.id","ms_razas.nombre","ms_mascotas.raza_id","ms_mascotas.id")
->join("ms_razas","ms_razas.id","=","ms_mascotas.raza_id")
->where("ms_razas.tipo_animal_id",$id)
->groupBy("ms_mascotas.raza_id")
->get();
Run Code Online (Sandbox Code Playgroud)
我一直在阅读这个错误,它与数据库文件中的严格模式有关,严格默认设置为false,我该怎么办?