【问题标题】:Why SUM of column values return 1?为什么列值的 SUM 返回 1?
【发布时间】:2019-05-26 15:47:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: php sql redbean


    【解决方案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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 2012-01-25
      相关资源
      最近更新 更多