2017-10-13 39 views
0

我有兩種模式:學校和地址。根據關聯模型中的值排序記錄

Address 
    has_many :schools 

School 
    belongs_to :address 

    t.bigint "address_id" 

現在我需要在學校模型中構建範圍,以便根據地址表中的城市發生情況對學校進行排序。所以,我需要以下結果:

School_1 | City_most_popular 
School_2 | City_most_popular 
School_3 | City_most_popular 
School_4 | City_most_popular 
School_5 | City_quite_popular 
School_6 | City_quite_popular 
School_7 | City_not_popular 

我寫了這個:School.joins(:地址)。集團( 「schools.id,addresses.city」)順序( 「addresses.city ASC」),但這隻。允許按城市分組記錄並忽略發生。

回答

1
School 
.joins(:address) 
.select('schools.*, count(*) OVER (PARTITION BY addresses.city) AS count') 
.order('count DESC') 
+0

不幸的是沒有在Postgresql上工作。在分組條款中需要schools.id。我添加了這個,但查詢結果是錯誤的。 – user2942937

+0

已更新的答案。 @ user2942937 – ninjarails

相關問題