我有一個應用程序(它在軌道上的紅寶石,但它應該沒關係)我在哪裏批量加載項目和每個分支的數量。如何使用sqlite數據庫函數來設置計算值
數據庫是sqlite。
說我有兩個表:項目和數量。
items columns:
id
quantity
quantities columns:
id
item_id
branch_id
value
我需要通過在項目表中的所有記錄,以便能夠循環的item.quantity設置爲所有quantity.value的地方ITEM_ID匹配item.id總和
我想知道有一種方法可以在sql查詢(select和update)中完成所有操作,這樣我就不必從數據庫中提取數據,執行計算,然後將更新後的數量寫回每個項目,而不是想使用sql語句和函數將它全部發生在數據庫中。
這是可能在一個SQL查詢功能數據庫端?
example:
item[1] = {id=>1,quantity=>0}
quantity[1] = {id=>1,item_id=>1,value=>100,branch_id=>1}
quantity[2] = {id=>2,item_id=>1,value=>200,branch_id=>2}
quantity[3] = {id=>3,item_id=>1,value=>300,branch_id=>3}
item[1].quantity = quantity[1].value + quantity[2].value + quantity[3].value
太棒了! - 我必須稍微調整它,以獲得正確的表名稱和字段名稱:「更新項目設置數量=(從items.id = quantities.item_id中的數量中選擇總和(值));」我有近10萬件物品和500k數量的數據庫,因此它將需要很長時間,比首先真正的批量加載更長...有沒有一種方法可以進一步優化/加速使用編譯指示語言或類似的東西?我可能會限制執行到剛剛更新的item_ids,但我認爲確保所有項目都正確的一種方法會很好。 – Streamline
順便說一下,這裏是最後的Ruby on Rails活動記錄的基礎聲明,我現在正在使用你的幫助,並將我更新的項目限制爲一個item_ids數組 - > Item.update_all(「quantity = =(select sum(value)from quantity where items.id = quantities.item_id)「,[」id IN(?)「,item_ids])...很好用!謝謝。 – Streamline