【问题标题】:Subtract data between two tables in SQLite android database在 SQLite android 数据库中的两个表之间减去数据
【发布时间】:2021-10-22 06:18:31
【问题描述】:

我在一个名为 my_store.db 的数据库中有两个数据表。第一个表名为 stock_table,第二个表名为 sell_table。 第一个表有 4 列。

库存表

code name price total stock
1 Books 500 200
2 pen 10 500
3 Reading table 1000 20

销售表

code name sell_qty date
1 Books 10 1-02-2015 8:00:36 GMT
2 pen 50 1-02-2015 8:02:45 GMT
3 Reading table 5 1-02-2015 8:33:32 GMT
1 Books 5 1-02-2015 9:04:15 GMT
2 pen 15 1-02-2015 9:23:32 GMT
1 Books 4 1-02-2015 10:43:18 GMT

所以当用户卖出一个产品时,库存表会立即更新。用户多次销售一种产品。所以我在销售表中得到了相同的产品代码。 如何获取最后的卖出记录并从主库存中减去。

我想要什么结果

code name price total stock
1 Books 500 81
2 pen 10 435
3 Reading table 1000 15

我在 SQLite 数据库中工作。这是一个安卓应用。

【问题讨论】:

  • 可以使用sql更新语句
  • 更新我将如何减去其他表值。
  • 读取值并使用它。

标签: java android database sqlite


【解决方案1】:

子查询将在这里为您提供帮助

update stock_table
   set total_stock = total_stock - (select sum(sell_quantity) 
                                      from sell_table st 
                                     where product_code = st.product_code)

如果每个产品的 sell_table 中可能有不止一行,则使用 sum() 函数。如果您确定每个产品不会有超过一条记录,您可以将其替换为 sell_quantity。

另外,如果您只需要更新一个产品的 total_stock,您可以添加 where 子句:

update stock_table
   set total_stock = total_stock - (select sum(sell_quantity) 
                                      from sell_table st 
                                     where product_code = st.product_code)
 where product_code = 101

【讨论】:

  • 看我用这个没有得到正确的结果。 public void stockUpdate(String code) { SQLiteDatabase db = this.getWritableDatabase(); db.execSQL(" UPDATE STORE_PRODUCT_DATABASE SET STOCK = STOCK - (SELECT SUM(SELL_QTY) FROM STORE_SELL_DATABASE SSD WHERE PRODUCT_CODE = SSD.PRODUCT_CODE )" + " WHERE PRODUCT_CODE = ? ",new String[] {code}); } 问题是如果我的一种产品库存在售出 5 件后为 100 件,则其库存显示为 73 件或一些奇怪的结果。怎么办
  • @user16582711 请检查这个查询“select sum(sell_quantity) from sell_table st where product_code = your_product_goes_here”返回什么?
  • @user16582711 不幸的是,标记在这里不起作用,但据我所知,我可以假设您执行的不是我要求的查询。子查询应仅在 1 行中返回 1 个值,而您的结果显示 3 列和多行。请执行我对 product_code 的上一条评论中的 subqiery 并让我知道结果。
  • 对不起。我是数据库新手。所以我很困惑。看我编辑我的问题。也许它会澄清我想要什么。
  • 我已经完成了。 UPDATE STORE_PRODUCT_DATABASE SET STOCK = STOCK - (SELECT SELL_QTY FROM STORE_SELL_DATABASE SSD ORDER BY date DESC LIMIT 1)" + " WHERE PRODUCT_CODE = ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
相关资源
最近更新 更多