0

範囲クエリを実行するには、以下の構文に似たものに従います -:

oms[:order_items].where(:internal_sla => 3..5) results in this query
 => #<Sequel::Mysql2::Dataset: "SELECT * FROM `order_items` WHERE ((`internal_sla` >= 3) AND (`internal_sla` <= 5))"> 

しかし、アクティブレコードクエリを変更して、このようなものを得るにはどうすればよいですか =>select internal_sla from order_items where (internal_sla<=3 and internal_sla>=0) OR (internal_sla<=15 and internal_sla>=10)

4

2 に答える 2

1
.where("(internal_sla >= ? AND internal_sla <= ? OR 
internal_sla >= ? AND internal_sla <= ? )", 0, 3, 10, 15).pluck(:internal_sla)

コメント後の更新:

internal_slaが整数の場合、次のことができます。

.where(:internal_sla => (0..3).to_a + (10..15).to_a).pluck(:internal_sla)

編集:タイプミスを修正

于 2013-03-20T07:18:55.603 に答える
0

これは機能します

oms[:order_items].where(:internal_sla => [0..3, 10..15])
于 2013-03-20T07:23:33.260 に答える