我正在尝试获取当月用户访问量的总和。这是我的代码(如果重要的话,我使用 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-FtEtqkk7QWQC2oAtMBA0WAgOIV4hPS此外,当我尝试仅获取具有我需要的列最大值的行的值时,如下所示:$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 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
在 RedBeanPHP 中,您必须使用 R::exec 以外的其他函数来进行 SELECT 查询。您获得的数字可能是 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)。
- 1 回答
- 0 关注
- 229 浏览
添加回答
举报
0/150
提交
取消