実行されたすべての注文を格納するORDEREXECUTIONSというテーブルがあります。それは多通貨アプリケーションなので、テーブルにはCURRENCY1_IDとCURRENCY2_IDという2つの列があります。特定の通貨ペアのすべての注文(例えばEUR/USD)のリストを取得するには2つのSELECTをRAILSアプリケーションの1つのSELECTに結合します。
私は合計を取得する行する必要があります:私のSUM()式がに応じて異なることを
v = Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",c1,c2,Time.now()-24.hours).sum("quantity").to_d
v+= Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",c2,c1,Time.now()-24.hours).sum("unitprice*quantity").to_d
注意通貨の順序。例: 私がしたい場合は、合計が、それはその後、実行通貨ペアUSDの量を命じた(USDのための仮定通貨IDは1であり、それはただ1つのSQLをトリガーするように、EUR、私はRoRのでこれを書くかどう2.
v = Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",1,2,Time.now()-24.hours).sum("quantity").to_d
v+= Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",2,1,Time.now()-24.hours).sum("unitprice*quantity").to_d
ですMySQLへの声明私はこれはどうなると思います
条件内のc1、c2の順序が2つのクエリで異なることは意図的ですか? –
はい、それは意図的です。私はデータがDBに格納される方法です。 currency1_idは常に購入通貨、currency2_idは売り通貨です。私は買物を売り、一つのテーブルに売る。 – KKK