2011-01-31 4 views
4

私は、私はこれらの場所のためのDBを持っている画像の数が注文した場所のリストを取得する必要がありますが、ここでこれが働いていた私のクエリグループは3

Location.select(:city).group(:city).order("SUM(images_count) DESC").sum(:images_count) 

です魔法のように、残念ながら、私は今起こると曖昧さを防ぐために、地域や国を追加する必要があるので、私は今、この

Location.select(:city, :province, :country).group(:city, :province, :country).order("SUM(images_count) DESC").sum(:images_count) 

を持っており、これは、誰かがこれで私を助けてもらえ:(

が動作していませんqあなた?グループ化しながら、

答えて

18

私は、私の解決策を非常に誇りに思ってないんだけど、それは動作します:

Location.group(:city, :province, :country) 
     .select(:city, :province, :country, "SUM(images_girl_count) as sum_images_count") 
     .order("sum_images_count DESC") 
     .collect{ |location| [location.city, location.province, location.country, location.sum_images_count] } 

すべてのフィードバック?

+0

ありがとう! 1つのクエリでグループ化して合計すると同様の問題が発生しました。 Postgresでもこれをテストしましたか? – Chanpory

+0

グループはポストグルで地獄です!しかしそれは標準です...はい、私のアプリはポストグルですので、これが動作していることを確認します – standup75

+0

うん!それは素晴らしい答えです、ありがとう! –

2

和方法は、1列のみを使用し、この試してみてください。それはしかし、より良い方法かもしれ

Location.select(:city, :province, :country, "SUM(images_count) as sum_images_count").group(:city, :province, :country).order("sum_images_count DESC") 

を。

私はそれが役に立ちそうです。

+0

美しいですが、私は試してみましたが、 "そのまま..." – standup75

+0

それは働いています...しかし、私は結果に和を持っていません。州、国、sum_images_countが不足しています、どうすればそれを得ることができるか知っていますか? – standup75

+0

それは異常です。属性にsum_images_countがあるはずです。コンソールでこれを試しましたか? – jrichardlai

関連する問題