0

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

アクティブレコードを使用してルビーでそれを書くにはどうすればよいですか?

4

2 に答える 2

1

Arel メソッドを直接使用できると思います。

MyTable.from("(SELECT * FROM my_table ORDER BY timestamp DESC) as my_table").group(:catid).order("nid DESC")
于 2012-04-06T14:37:44.473 に答える
0
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
于 2012-04-06T14:14:16.550 に答える