打扰一下,如果标题不适合我的问题。
我有一个名为销售的表格和3列名为卖方,买方和价格。
我拥有的: Before
我想要的: After
基本上我想显示一个卖家列表,其中包含他们与一位买家的销售总额。
这是我的SQL查询:
SELECT seller, buyer ,SUM(price)
FROM sales
GROUP BY seller , buyer
我的问题(除了这个查询可能是错误的)是"翻译"进入CakePHP。通过食谱后,我在控制器中有这个:
public function myview (){
$this->set('mysales', $this->Sales->find('all',
array('sum(price) AS total','group' => array('seller','buyer'))));
}
我使用PHP将myview.ctp中的结果显示到HTML表格中(我没有将HTLM元素放在下面):
<?php
foreach ($mysales as $thesales)
{
echo $thesales['Sales']['seller'];
echo $thesales['Sales']['buyer'];
echo $thesales['Sales']['total'];
}?>
当然它不起作用。我正在使用SQL Server 2014,我有这个错误:
Error: SQLSTATE[42000]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Column 'sales.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
非常感谢你的帮助!
答案 0 :(得分:0)
对于SQL函数,您应该遵循以下语法:Using SQL Functions
试试这个:
对于CakePHP 3:
$mysales = $this->Sales->find();
$mysales = $mysales
->select([
'seller', 'buyer',
'total_price' => $mysales ->func()->sum('price'),
])
->group(['seller','buyer'])
->toArray();
pr($mysales); // Check your result
对于CakePHP 2.x:
$this->set('mysales', $this->Sales->find('all',
array(
'fields' => array('SUM(price) AS total','seller','buyer'),
'group' => array('seller','buyer')
)
));
在您看来:
pr($mysales);