我很喜歡學習,但我無法弄清楚這一點。我目前的所有查詢都是類似MyObject.find(various conditions)
。這將返回一個數組MyObject
s,並且對於大多數目的而言是足夠的。但是現在我想創建一個最受歡迎的項目列表,其中查詢如select name, count(*) from MyObjects group by name order by 2
。這不會返回MyObject
,這將返回任意數據列。那我該怎麼做?如何在Ruby on Rails中編寫任意SQL查詢?
3
A
回答
0
您隨時可以:
MyObject.find_by_sql('query....')
,但通常有更好的方法。
5
如果您使用MyObject.find_by_sql應該可以解決您的問題。您可以像往常一樣通過返回的對象訪問在select語句中使用的任何其他列。例如,
MyModelName.find_by_sql("select coulmn1, column2 as somenewname,
column3 as someothername from....")
這將返回對象,每個對象都具有稱爲somenewname和someothername的屬性。
有關find_by_sql方法的更多信息,請參閱文檔。
+0
謝謝,這正是我以爲我在尋找的東西,但find_by_sql似乎應該適合我的目的。 – Kundan 2012-03-16 05:20:15
2
你可以做一些簡單的像,通過標準的ActiveRecord查詢接口:
results = MyObject.select('name, count(*) as how_many')
.group(:name)
.order(:how_many)
# And later...
results.each do |o|
puts "#{o.name} has #{o.how_many}"
end
,所以你不必訴諸SQL。
正如其他人所提到的,如果您想使用SQL查詢基於SQL查詢來實例化一組模型對象,也有find_by_sql
。
如果您有一些SQL查詢從多個表中收集數據或包含AR不擅長的事情(子查詢,派生表,...),那麼您可以將ActiveRecord推開,直接與數據庫:
connection.select_rows('some big pile of sql').each do |r|
# r will be an array of strings so you have to pull
# it apart and sort out the types by hand
end
使用select_rows
如果你對數據進行編碼的一大堆直JSON(或類似)也可能是有用的,而且不需要對ActiveRecord的細微,不想支付處理使用ActiveRecord的開銷。
0
你可以嘗試這聽起來就像它是可行的與活動記錄ORM路
MyObject.select(:name, "count(*) as count").group(...).order(...)
相關問題
- 1. 如何在Ruby on Rails中編寫嵌套查詢?
- 2. Ruby on Rails,SQL Server查詢
- 3. SQL查詢Ruby On Rails
- 4. 如何寫的Ruby這個sql查詢加入查詢(Ruby on Rails的)
- 5. 如何在Ruby on Rails或Mongodb查詢中進行ruby查詢?
- 6. 在Ruby中運行任意SQL查詢
- 7. 如何在Ruby on Rails中有效地寫這個查詢?
- 8. Ruby on Rails查詢
- 9. 查詢Ruby on Rails?
- 10. ruby on rails查詢
- 11. 在Ruby on Rails中編寫Minecraft面板
- 12. Ruby on rails轉換爲sql查詢
- 13. Ruby on Rails的 - 動態SQL查詢
- 14. Ruby on Rails的2.3 SQL LIKE查詢
- 15. Ruby on Rails - SQL查詢計數
- 16. 將SQL查詢轉換爲Ruby on Rails
- 17. Ruby on Rails的/ SQL查詢與
- 18. 在Ruby on Rails中加入查詢
- 19. Ruby on Rails API查詢
- 20. Ruby on Rails的查詢
- 21. 查詢Ruby on Rails的
- 22. Ruby on rails MYSQL查詢
- 23. 任何好的ruby(on rails)編輯器?
- 24. 如何在rails中編寫postgres查詢
- 25. 如何在ruby中編寫GROUP BY SQL查詢?
- 26. 如何在Ruby on Rails中編寫mark_as_deleted方法?
- 27. 如何在Ruby on Rails中編寫連接條件?
- 28. ruby on rails:這個sql查詢如何工作?
- 29. 如何將SQL查詢轉換爲Ruby on Rails
- 30. 如何在sql中編寫此查詢
。你能更清楚一點嗎? – Calvin 2012-03-16 05:15:15