слеующую выборку к таблице user джойню таблицу role и vote - получаю поля role_name с названием роли и rating со средним значением поля rate. вот такой запрос в итоге
SELECT "user"."id", "user"."username", "user"."email", "user"."avatar", "name" AS "role_name", AVG("rate") AS "rating", "user"."createdAt" FROM "user" AS "user" LEFT OUTER JOIN "role" AS "role" ON "user"."roleId" = "role"."id" LEFT OUTER JOIN "vote" AS "votes" ON "user"."id" = "votes"."user_id" WHERE "user"."id" = '2' GROUP BY "user"."id", "role"."name";
ORM попросила меня добавить "role"."name" в GROUP BY.
Это нормально потому что роль одна.
А как выкручиваться если ролей у пользователя несколько ?
орм, - это зло ))), даж запрос нормально отформатировать не в состоянии... тут кони люди смешались, юзер -> Н ролей, М голосов, роли и голоса непонятно как относятся к друг другу. ты выбираешь роли юзера + средний рейт по юзеру, одинаковый для каждой роли...
Обсуждают сегодня