結合テーブルのモデルを使用するのが最適:これは2つのクエリを行いますが、それはトラックの結果の配列を人気順であることを確認しますことを
class PlaylistTrack < Sequel::Model(:playlists_tracks)
many_to_one :playlist
many_to_one :track
def self.top10_tracks
group_and_count(:track_id).
reverse(:count).
limit(10).
eager(:track).
all.
map(&:track)
end
end
注意を。
あなたがしたい場合は、結合テーブルのモデルなしで単一のクエリでそれを行うことができます。
def Track.top10
join(:playlists_tracks, :track_id=>:id).
group{tracks[:id]}.
select_all(:tracks).
select_append{count(tracks[:id])}.
order{count(tracks[:id]).desc}.
limit(10).
all
end
注それはあなたではない非集計式を選択したので、これは、非標準のSQLを使用していることこれはPostgreSQLで動作します。トラックテーブルのすべての列をグループ化することで、標準SQLでこの作業を行うことができます。
サンプルデータを表示するには、 'order by ... limit' –