我必须使用Active Relation进行SQL查询。


  选择*从(从purchase_order_items选择*从
  created_at desc)as abc where(fsn ='9788183071000'and sku
  ='SKU0000000000000')或(fsn ='BAGD7SHVZZPPVAZH'并且sku ='SKU0000000000000')或(fsn ='CAMCUTS25Z2HSFE8'和sku ='SKU0000000000000')由fsn,sku分组


什么是最佳和优化的方法。我试过了


  PurchaseOrderItem.where(“(fsn ='9788183071000'和sku
  ='SKU0000000000000')或(fsn ='BAGD7SHVZZPPVAZH'并且sku ='SKU0000000000000')或(fsn ='CAMCUTS25Z2HSFE8'和sku ='SKU0000000000000')“)。order('created_at')


但是然后没有按要求进行分组。表由rails中的模型名称决定。
有什么办法可以进行上述查询?

我不想将其作为普通查询传递。

最佳答案

您可以使用Arel来进行组合的SQL查询。

p = PurchaseOrderItem.arel_table
User.where((p[:fsn].eq('9788183071000').and(p[:sku].eq('SKU0000000000000')).or(p[: fsn].eq('BAGD7SHVZZPPVAZH').and(p[:sku].eq('SKU0000000000000')).or(p[: fsn].eq('CAMCUTS25Z2HSFE8').and(p[:sku].eq('SKU0000000000000'))).order("fsn, sku")

10-07 23:36