为什么列值的SUM返回1?

时间:2019-05-26 15:47:26

标签: php sql redbean

我试图获取用户的总和 本月访问。这是我的代码(如果很重要,我使用ORM RedBeanPHP):

$summ = R::exec('SELECT SUM(amount) FROM statistic WHERE type = "usuall_visit" AND month = :month',[':month'=>date('m')]);

$ summ始终为1,即使它不是真的。 ._。 我的表统计: https://drive.google.com/open?id=1MFt-FtEtqkk7QWQC2oAtMBA0WAgOIV4h

P.S。另外,当我尝试仅获取行的值且需要列的最大值时,就像这样:

$summ = R::exec('SELECT MAX(amount),value FROM statistic WHERE type = "usuall_visit" AND month = :month',[':month'=>date('m')]);

我遇到错误: “语法错误或访问冲突:1140在没有GROUP BY的聚合查询中,SELECT列表的表达式#2包含非聚合列'somesite.statistic.value';这与sql_mode = only_full_group_by不兼容” 我说好,然后尝试添加GROUP BY ID。但是然后我只得到第一行,而不仅是实际最大值._。我不知道我做错了什么

1 个答案:

答案 0 :(得分:0)

在RedBeanPHP中,对于SELECT查询,必须使用R :: exec以外的其他函数。您得到的数字可能是select返回的行数或一个简单的表示成功的值。

尝试

$summ = (int)R::getCell('SELECT SUM(amount) FROM statistic WHERE type = "usuall_visit" AND month = :month',[':month'=>date('m')]);

对于第二个问题,您可能想稍微学习一下SQL,至少是最基础的。这样的嵌套查询可能适合您。

SELECT value FROM statistic WHERE amount = (SELECT MAX(amount) FROM statistic WHERE type = "usuall_visit" AND month = :month') LIMIT 1

您将需要再次将其与R :: getCell(或R :: getRow,如果要检索多个列)一起使用。