1

私は持っているPartオブジェクトを持っておりSupplier、一部はフィールドを持っていますsupplier_id

だから私はいくつかの記録を持っており、いくつの部品がいくつのサプライヤーから来たのかを調べたいと思っています。では、このように部品を配置したとしましょう。パーツ数=100

25 came from supplier_id => 3
25 came from supplier_id => 1
50 came from supplier_id => 5

だからここに私が私のクエリを作った方法があります:

Part.where(:order_id => 30146).select('count(id) as count, supplier_id').group('supplier_id').order('count DESC')

また、正しいクエリも生成されるようです:

SELECT count(id) as count, supplier_id FROM "parts" WHERE "parts"."order_id" = 30146 AND ("parts"."deleted_at" IS NULL) GROUP BY supplier_id ORDER BY count DESC

しかし、私の結果は私が意図したものではありません:

[#<Part supplier_id: 3>, #<Part supplier_id: 1>, #<Part supplier_id: 5>]

サプライヤーIDだけを取得しますが、カウントは取得しません。私はこのような出力を得たいと思っていました:

25 => 3
25 => 1
50 => 5

ここで何が欠けていますか?

4

2 に答える 2

2

count メソッドは、ID からカウントへのハッシュを取得するために指定できるハッシュを受け取ります。あなたにとって、それは次のようなものかもしれません:

Part.where(order_id: 123).count(group: "supplier_id")
于 2013-08-04T21:52:27.700 に答える
0

キーワードカウントは SQL-Query で予約されていると思います。たとえば、countA を試してください。

SELECT count(id) as countA, ...
于 2013-08-04T21:52:41.510 に答える