Вопрос по sql sum

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
louisvuitton
Сообщения: 203
Зарегистрирован: 2014.02.16, 03:09

Вопрос по sql sum

Сообщение louisvuitton »

Есть таблицы
users
user_points


У юзера есть поле teacher

Нужно подсчитать очки points всех, юзеров одного учителя (например у которых teacher равно 30)


Делаю как то так

Код: Выделить всё

SELECT SUM(user_points.points) as all_points,  user.id, user.username, user_points.points
            FROM user
                RIGHT JOIN user_points ON user_points.user_id = user.id AND user_points.points > 0 
            WHERE user.id_teacher = 30
            GROUP BY user.id
Получаю

Изображение

Почему в all_points не 490 ? :x
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Вопрос по sql sum

Сообщение dmg »

louisvuitton писал(а): 2018.03.17, 13:28
Почему в all_points не 490 ? :x
Может потому, что вы группируете по user id?
louisvuitton
Сообщения: 203
Зарегистрирован: 2014.02.16, 03:09

Re: Вопрос по sql sum

Сообщение louisvuitton »

Если выбирать не только сумму а и другие поля, без group_by была ошибка

Syntax error or access violation: 1140 In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'database.user.id'; this is incompatible with sql_mode=only_full_group_by

Я хотел, чтобы выбирались все строки, а значение all_points у всех было 490

Спасибо, попробую переделать на queryScalar и брать только сумму
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Вопрос по sql sum

Сообщение dmg »

louisvuitton писал(а): 2018.03.17, 21:15 Я хотел, чтобы выбирались все строки, а значение all_points у всех было 490
я вам открою секрет: в SELECT можно засунуть другой SELECT :)

Код: Выделить всё

SELECT (SELECT sum(id) FROM et), * FROM et ; 
Ответить