我试图获取用户的总和 本月访问。这是我的代码(如果很重要,我使用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。但是然后我只得到第一行,而不仅是实际最大值._。我不知道我做错了什么
答案 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,如果要检索多个列)一起使用。