2015-09-11 56 views
0

我已经试过这段代码,它的工作原理,但只对每个客户的第一个实例。即列应贯穿并将所有订单添加到以前的欠款中。SQLite。在第一个例子中停止满足WHERE条件

UPDATE customers_tbl 
    SET customer_amountowing = customer_amountowing + 
     (SELECT sorder_amount FROM standingorder_tbl 
      WHERE standingorder_tbl.sorder_customer = customers_tbl.customer_address1) 
    WHERE EXISTS 
     (SELECT * FROM standingorder_tbl 
      WHERE standingorder_tbl.sorder_customer = customers_tbl.customer_address1); 

有谁能告诉我因为我在这里错了。干杯家伙!

+1

,如果你运行一个选择具有相同返回什么数据'WHERE EXISTS'条款? – Dai

+0

另外,请解释你的模式。为什么'customer_address1'看起来是主键而不是'customerId'列? – Dai

回答

1

如果您要添加的所有以前的订单总和的产品,则应使用SUM函数在子查询以下列方式:

UPDATE customers_tbl 
    SET customer_amountowing = customer_amountowing + 
     (SELECT SUM(sorder_amount) FROM standingorder_tbl 
      WHERE standingorder_tbl.sorder_customer = customers_tbl.customer_address1) 
    WHERE EXISTS 
     (SELECT * FROM standingorder_tbl 
      WHERE standingorder_tbl.sorder_customer = customers_tbl.customer_address1); 
+0

非常感谢。问题是它在SQLIte管理器工具中工作,但是当我尝试在我的android项目中使用原始查询来实现它时,它不起作用。没有崩溃,但是当我刷新SQLIte管理器时数据没有更新。有什么建议么? – bez84

+0

啊。不要担心,忘记Cursor.moveToFirst()。全部排序。谢谢@ uri2x – bez84