Почему сумма значений столбца возвращает 1? - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь получить сумму посещений пользователя за текущий месяц.Это мой код (если важно знать, я использую 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 выражение # 2 списка SELECT содержит неагрегированный столбец 'somesite.statistic.value', это несовместимо с sql_mode = only_full_group_by "Я сказал, что все в порядке, и попытался добавить GROUP BY ID.Но тогда я получаю только 1-й ряд, но не только с максимальным значением ._.Я не знаю, что я сделал не так

1 Ответ

0 голосов
/ 26 мая 2019

В 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, если вы хотите получить несколько столбцов).

...