@Wispik

Как правильно составить SQL запрос?

У мне имеется 4 таблицы:
User: id, username
Results: id, user_id, time
Penalty: id, user_id, time
Coin: id, coin_id, user_id

user_id везде ссылается на таблицу User
Мне нужно получить всех пользователей, у которых есть username, сумму Results.time, сумму Penalty.time и кол-во монет.
Но у меня при join данные в таблице множатся и я никак не могу понять, как правильно составить запрос, чтобы данные правильно группировались
SELECT u.id, SUM(r.time), SUM(pen.time), COUNT(coin) FROM public.user u
LEFT JOIN public.results r ON (u.id = r.user_id_id)
LEFT JOIN public.penalty pen ON (u.id = pen.user_id_id)
LEFT JOIN public.coin coin ON (u.id = coin.user_id_id)
WHERE u.username IS NOT NULL
GROUP BY u.id
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
SELECT id, (SELECT SUM(pen.time) FROM penalty WHERE id = penalty.id GROUP BY penalty.id LIMIT 1) AS sum_pen
FROM user
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы