레일 당 루비이지만 문제가되지 않습니다. 분기 당 항목과 수량을 대량로드하는 곳이 있습니다.계산에서 값을 설정하기 위해 sqlite db 함수를 사용하는 방법
데이터베이스는 sqlite입니다.
두 개의 테이블이 있습니다. 항목 및 수량을 말합니다.
items columns:
id
quantity
quantities columns:
id
item_id
branch_id
value
나는
내가 알고 싶습니다 ITEM_ID이 item.id 일치하는 모든 quantity.value의 합에 item.quantity 설정 항목 테이블의 모든 레코드를 반복 할 수 있어야합니다 이 모든 작업을 SQL 쿼리 (select 및 update) 내에서 수행하여 데이터베이스에서 데이터를 가져 와서 계산을 수행 한 다음 업데이트 된 수량을 각 항목에 다시 쓰지 않아도됩니다. 그것은 모든 SQL 문과 함수를 사용하여 데이터베이스에서 발생하도록하고 싶습니다.SQL 쿼리 함수 db 측에서 가능합니까?
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 = quantity.item_id 인 수량에서 선택 합계 (값);" 나는 거의 100k 항목과 500k 수량을 데이터베이스에 가지고 있으므로 매우 오랜 시간이 걸릴 것입니다. 처음에는 대량로드보다 오래 걸립니다 ... pragma 문이나 비슷한 것을 사용하여 최적화/속도를 향상시키는 방법이 있습니까? 나는 방금 업데이트 된 item_ids로 실행을 제한 할 것이지만 모든 항목이 올바른지 확인하는 방법이 좋을 것이라고 생각했습니다. – Streamline
여기에 마지막 루비 레일에 대한 활성 레코드를 기반으로 성명서 난 지금 당신의 도움으로 사용하고 item_ids의 배열로 업데이 트 항목을 제한 -> Item.update_all ("quantity = (수량에서 합계 선택 (수량) 수량 items.id = quantity.item_id) ", ["id IN (?) ", item_ids]) ... 훌륭한 작품입니다! 감사. – Streamline