2017-02-24 24 views
0

私は2つの無関係のテーブルを持っており、ティッカーでそれらの値を合計したいと思います。例えばPostgres:2つのテーブルの合計

  1. 受注:PRODUCT_ID、値
  2. 販売:PRODUCT_ID、すべてがゼロに釣り合うことを確認するために値

、私はグループたいのですが商品IDごとに注文と売上を計算し、値を合計します。

+0

ある場合は、このチェックを実行することができます。これは、投稿されたコメントに基づいて誤解を招く – engineersmnky

答えて

0
orders_hash = Order.group(:product_id).sum(:value).sort_by(&:first).to_h 
sales_hash = Sale.group(:product_id).sum(:value).sort_by(&:first).to_h 

orders_hash == sales_hash 

そして、上記の私が試してみて、助けることが、より正確な例を投稿してくださいして喜んでいるだろうfalse

orders_hash.each do |k, v| 
    raise "Mismatch for product_id: #{k}" unless sales_hash[k] == v 
end 
+0

私たちは何か似ているが、2つのデータベース呼び出しのために悪いですか? –

+0

@AndrewCPKelley無関係の2つのテーブルで計算を行うために、どのように1回のDB呼び出しが表示されますか? :)これが可能であっても(プログラミングでは何も不可能です)、おそらく純粋な複雑なSQLであるべきです。 –

+0

私はあなたがしたことを好きですが、彼らが等しいかどうかを見るよりも和を得たいと思います。無関係なテーブルの合計について、多くのSOの投稿を見ましたが、より明確になるように探していました。参照してください:http://stackoverflow.com/questions/13021623/how-to-do-a-sum-across-two-unrelated-tables –

関連する問題