我正在尝试使用sum函数执行cakephp的查询,但是没有返回预期的结果。
控制器配置为;
$PedItensOmitens = $PedItenstable->find('all', [
'fields' => array( 'item_prod, sum(item_qtd)as total'),
])->join(['b' =>[
'table' =>'om_itens',
'type' =>'INNER',
'conditions' => 'item_id = b.omi_item'
]
])->where(['b.omi_ordom ' => $ordemMontagem->om_id
])->Group(['item_prod '
]);
并且我返回消息“错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有错误;请检查手动que对应于您的MariaDB服务器版本,以便在附近使用正确的语法'AS PedItens__sum(item_qtd)第1行的完整FROM ped_itens PedItens INNER JOIN om_itens'“
使用mysql在数据库中进行查询是
select a.item_prod, sum(a.item_qtd)as total from ped_itens a inner join om_itens b on a.item_id = b.omi_item where b.omi_ordom = 1 group b a.item_prod
并给我带来预期的结果
item_prod - 总计
7 - 2400.00
9 - 5292.00
10 - 6492.00
有人可以帮助我吗?
答案 0 :(得分:0)
您可以尝试用fields
替换->select
数组。类似的东西:
$PedItensOmitens = $PedItenstable->find()
->select([
'item_prod' => 'item_prod',
'total' => 'sum(item_qtd)'
])
->join([
'b' =>[
'table' =>'om_itens',
'type' =>'INNER',
'conditions' => 'item_id = b.omi_item'
]
])
->where(['b.omi_ordom ' => $ordemMontagem->om_id])
->Group(['item_prod'
]);
在Cake查询中指定要从中选择的表也是一个好主意,类似于原始SQL中的表。所以在选择:
'item_prod' => 'a.item_prod', // where a is your model alias
'total' => 'sum(a.item_qtd)'