我正在尝试获取本月用户访问的总和。这是我的代码(如果重要的话,我使用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
另外,当我尝试get values of row with max value of column时,如下所示:
$summ = R::exec('SELECT MAX(amount),value FROM statistic WHERE type = "usuall_visit" AND month = :month',[':month'=>date('m')]);
我遇到了错误:“语法错误或访问冲突: 1140在没有GROUP BY的聚合查询中,SELECT list的表达式#2包含非聚合列'somesite.statistic.value';这与sql_mode=only_full_group_by不兼容。”我说ok,并尝试按ID添加GROUP。但随后我只得到了第一行,但并不是只有实际的最大值._。我不知道我做错了什么
发布于 2019-05-27 00:51:45
在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 )。
https://stackoverflow.com/questions/56315032
复制相似问题