猿问

为什么列值的 SUM 返回 1?

我正在尝试获取当月用户访问量的总和。这是我的代码(如果重要的话,我使用 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


PS此外,当我尝试仅获取具有我需要的列最大值的行的值时,如下所示:


$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。但是后来我只得到了第一行,但不仅仅是实际最大值._。我不知道我做错了什么


潇湘沐
浏览 230回答 1
1回答

吃鸡游戏

在 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)。
随时随地看视频慕课网APP
我要回答