2012-10-29 66 views
0

理論上我想是這樣的:
:order => "column1 ASC, column2 DESC"訂購兩件事情在兩種不同的風格

但實際上COLUMN1是不是在我的情況下,一列,但聚合值:
:order => relations.count

我怎樣才能當其中一個實際上是一個聚合值時,按兩列排序?

BTW:反Cache是​​不是一種選擇(因爲它是過時的,當我需要它)

回答

0
:order => "COUNT(*), column2 DESC" 
+0

我怎麼能選擇在這種情況下的關係計數? 我可以在COUNT中嵌套SELECT嗎?如果是這樣,我怎麼會引用當前對象ID(這是BTW一個範圍) –

0

要通過計算值排序/組/等等,你有相應的條款中註明它,在你的情況下使用(可能是左)加入:

Something.select("somethings.*, COUNT(others.id)"). 
      joins("LEFT JOIN others ON others.something_id = somethings.id"). 
      group("somethings.*"). 
      order("COUNT(others.id), column2 DESC") 
+0

我其實用範圍,所以沒有選擇 –

相關問題