@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"
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Группировать нужно перед джойном. Используйте FROM SELECT.
А так у вас получается, что в run и ride по одной строке и всё хорошо (у вас вышла 1 строка), но в swim выдаст 5 строк. Но в этих четырёх строках для run и ride будут не нули, а какое-то случайное значение из их предыдущих строк, поэтому суммы у вас и не совпадают.
Ответ написан
Ваш ответ на вопрос

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

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