Activerecord 返回按最新关联排序的不同记录的查询

Activerecord 返回按最新关联排序的不同记录的查询,activerecord,associations,Activerecord,Associations,我有一个简单的关系 Playlist (id, title) which has_many Playlistships(playlist_id, post_id) playlishp是Playlist和Post类之间的关联。当用户向“播放列表”添加“帖子”时,将创建一个新的“播放列表”。当从“播放列表”中删除“帖子”时,相应的“播放列表”将被销毁 我想创建一个查询,该查询将按playliships的顺序返回“Playlists”。已在 基本上,我希望有一个视图,显示最近通过playlish

我有一个简单的关系

Playlist (id, title)

which has_many

Playlistships(playlist_id, post_id)
playlishp
Playlist
Post
类之间的关联。当用户向“播放列表”添加“帖子”时,将创建一个新的“播放列表”。当从“播放列表”中删除“帖子”时,相应的“播放列表”将被销毁

我想创建一个查询,该查询将按
playliships的顺序返回“Playlists”。已在

基本上,我希望有一个视图,显示最近通过
playlishp
类添加了
帖子的
播放列表。

尝试以下操作:

select * from Playlists P
  join Playlistships S on P.id = S.playlist_id
order by S.created_at
要获取每个播放列表(包含任何帖子)的最新播放列表,请执行以下操作:


我需要播放列表的明确结果。我的问题是,在我加入之前,我似乎无法让activerecord对在创建时创建的播放列表进行排序。@wuliwong-我使用子查询编辑了答案,以获取最新的播放列表。这对你有帮助吗?愚蠢的是,我忘了提到我正在RubyonRails中使用Activerecord。我将不得不争论你写了什么来在那里工作。我会告诉你事情的进展。我现在在做我真正的工作,所以今晚我得试试。谢谢你!对不起,我花了一段时间才回复你。第二个查询成功了!只需一个小编辑,我需要将
播放列表
更改为
播放列表
。谢谢,抱歉,我花了这么长时间才回复。
select * from Playlists P
  join Playlistships S on P.id = S.playlist_id
where S.created_at = (select max(created_at) from Playlistships where playlist_id = P.id)
order by P.id