Задать вопрос
@vetsmen

Как правильно составить запрос с джоинами?

Добрый день.
Есть таблица Users в отношении с другими таблицами (Run, Ride, Swim, etc)
Стоит задача одним запросом вытащить всех Users и к каждому юзеру прикрепить сумму километров из таблиц с отношениями
Но запрос ниже не работает со всеми вместе, ибо с каждой выборкой строк становится все больше
Как можно решить эту проблему?
SELECT
	"user"."id",
	"user"."name",
	SUM("run"."km") AS "run_km",
	SUM("ride"."km") AS "ride_km",
	SUM("swim"."km") AS "swim_km"
FROM "user"
LEFT JOIN "run"
	ON "user"."id" = "run"."userId"
LEFT JOIN "ride"
	ON "user"."id" = "ride"."userId"
LEFT JOIN "swim"
	ON "user"."id" = "swim"."userId"
GROUP BY "user"."id"
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Группировать нужно перед джойном. Используйте FROM SELECT.
А так у вас получается, что в run и ride по одной строке и всё хорошо (у вас вышла 1 строка), но в swim выдаст 5 строк. Но в этих четырёх строках для run и ride будут не нули, а какое-то случайное значение из их предыдущих строк, поэтому суммы у вас и не совпадают.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы