【发布时间】:2018-08-17 20:49:16
【问题描述】:
我有一个模型 Leagues::FantasyPlayer,它有一个多态变量 player_entity,它是 Players::NflPlayer 或 Players::TeamPlayer。
我正在尝试加载联盟的梦幻球员,按“平均选秀位置”排序。 Players::NflPlayer 和 Players::TeamPlayer 两个表都有一个列“average_draft_position”。
这是我目前的尝试:
fantasy_players = paginate Leagues::FantasyPlayer.includes(player_entity: :team).
joins("LEFT JOIN players_nfl_players ON leagues_fantasy_players.player_entity_id = players_nfl_players.id AND leagues_fantasy_players.player_entity_type = 'Players::NflPlayer'").
joins("LEFT JOIN players_team_players ON leagues_fantasy_players.player_entity_id = players_team_players.id AND leagues_fantasy_players.player_entity_type = 'Players::TeamPlayer'").
where(available: true, conference_id: conference_id,league_id: league_id).
order("players_nfl_players.average_draft_position, players_team_players.average_draft_position"), per_page: 15
问题在于,这首先返回按 average_draft_position 排序的 Players::NflPlayer 表,然后返回按 average_draft_position 排序的 Players::TeamPlayer 表 - 有什么方法可以让两个不同表的结果交错?
谢谢!!
【问题讨论】:
-
嗨。 “交错”如何?我们知道有序列的投影是什么样子的——表中列的有序
union——但是其余的是什么样的呢?也许你想要某些left joins 的联合?请阅读minimal reproducible example 并采取行动。这也是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用一个变体搜索您的标题和关键字作为您的标签。
标签: sql ruby-on-rails join activerecord