Mysql は順序によってグループ化するため、モジュールで実行:group
したいと思います。:order
そのための SQL ソリューションは次のようになります。
SELECT * FROM
(
select * from `my_table` order by timestamp desc
) as my_table_tmp
group by catid
order by nid desc
アクティブレコードを使用してルビーでそれを書くにはどうすればよいですか?
Mysql は順序によってグループ化するため、モジュールで実行:group
したいと思います。:order
そのための SQL ソリューションは次のようになります。
SELECT * FROM
(
select * from `my_table` order by timestamp desc
) as my_table_tmp
group by catid
order by nid desc
アクティブレコードを使用してルビーでそれを書くにはどうすればよいですか?
Arel メソッドを直接使用できると思います。
MyTable.from("(SELECT * FROM my_table ORDER BY timestamp DESC) as my_table").group(:catid).order("nid DESC")
query = <<-sql_statement
SELECT * FROM
(
select * from `my_table` order by timestamp desc
) as my_table_tmp
group by catid
order by nid desc
sql_statement
result = MyTable.connection.execute(query)
を使用することもできますActiveRecord::Base.connection.execute(query)
。
返されたレコードをトラバースするには、を使用しますresult.each
。
例(mysql2 gemリポジトリから):
results.each do |row|
# conveniently, row is a hash
# the keys are the fields, as you'd expect
# the values are pre-built ruby primitives mapped from their corresponding field types in MySQL
# Here's an otter: http://farm1.static.flickr.com/130/398077070_b8795d0ef3_b.jpg
end