0

質問のタイトルが意味をなさない場合は申し訳ありませんが、私はまだ初心者であり、説明の仕方がわかりません。

これが正常に機能する現在のSQLクエリです

select teams.id as team_id, teams.team_name, players.type_name, sum(points) as points
from teams 
inner join gameweeks on teams.id = gameweeks.team_id    
inner join gameweeks_players on gameweeks.id = gameweeks_players.gameweek_id
inner join players on gameweeks_players.player_id = players.id
inner join player_fixtures on players.id = player_fixtures.player_id AND player_fixtures.gw_number = gameweeks.number
group by teams.id, players.type_name

レールでは、このクエリを次のように翻訳しました

Team.joins(gameweeks: :players).
joins("inner join player_fixtures on players.id = player_fixtures.player_id AND player_fixtures.gw_number = gameweeks.number").
group("teams.id, players.type_name").
select("teams.id, teams.team_name, players.type_name as type, sum(points) as points")

レールには、これら2つのモデルがあります。

class League < ActiveRecord::Base
    belongs_to :user
    has_many :league_teams
    has_many :teams, :through => :league_teams
end

class Team < ActiveRecord::Base
    has_many :gameweeks
    has_many :league_teams
    has_many :leagues, :through => :league_teams
end

リーグに関連付けられているチームのみにクエリを変更したい (どうにかしてそのリーグの ID を渡したい)

それを行う方法がわからないだけで、適切なキーワードでグーグルするための知識がありません...

正しい方向に向けてください。

4

1 に答える 1