Как упорядочить, суммировать и присоединиться с помощью ActiveRecord - PullRequest
0 голосов
/ 07 мая 2020

У меня есть две таблицы:

   USERS    

id     name 
------------
1.    bill  
2.    dave  
3.    kate  
4.    sara  

и

GAMES
score    user_id
------------------
10       1
 0       1
 0       2
10       3
 0       2
10       3
 0       3
 0       4

Этот запрос:

SELECT users.name, SUM(games.score) AS total FROM users JOIN games 
ON users.id = games.user_id ORDER BY total LIMIT 2;

дает такой вывод:

name    total
-------------
kate     20
bill     10

Какое здесь правильное соглашение Rails для ActiveRecord для выполнения ORDER BY с помощью SUM и JOIN?

1 Ответ

0 голосов
/ 07 мая 2020

Вы хотите выбрать сумму очков в играх каждого пользователя ...

Вам не всегда нужно копировать синтаксис sql поверх ... просто подумайте, как это сделать это в рельсах с их методами запроса ..

# Creates an array of all of the records that exist under the user_id of the
# current user being looped and adds all of those records together, you can
# handle whatever you want to do with that data here.  Say put it in an associate # table, or run some logic on it.  This is the total amount

Users.all.each do |user|
 total = Games.where(user_id: user.id).inject(0, :+)
 logger.info "User: #{user.id}"
 logger.info "Total: #{total}"
end
...