Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite android上两列触发器的总和_Android_Sqlite_Android Sqlite_Triggers - Fatal编程技术网

SQLite android上两列触发器的总和

SQLite android上两列触发器的总和,android,sqlite,android-sqlite,triggers,Android,Sqlite,Android Sqlite,Triggers,正如title所说,我试图根据同一个表中两列的总和设置一个列值,我的意思是,我在表中有一行,其中有一些属性“资本、收入、材料费用、其他费用、净利润”。每当我销售新产品或注册一些付款时,我都会更新这一行,我将更新“收入”属性加上销售价格,当我注册材料费用(原材料费用)时,我将更新该属性加上新的费用价格,与其他费用的操作相同,我的要点是我想计算我销售的净利润,如果我销售20美元,我在原材料上花费10美元,我希望我的净利润属性是10,每次我更新数据表时都做同样的操作,我想用“资本”属性(收入-(材料费

正如title所说,我试图根据同一个表中两列的总和设置一个列值,我的意思是,我在表中有一行,其中有一些属性“资本、收入、材料费用、其他费用、净利润”。每当我销售新产品或注册一些付款时,我都会更新这一行,我将更新“收入”属性加上销售价格,当我注册材料费用(原材料费用)时,我将更新该属性加上新的费用价格,与其他费用的操作相同,我的要点是我想计算我销售的净利润,如果我销售20美元,我在原材料上花费10美元,我希望我的净利润属性是10,每次我更新数据表时都做同样的操作,我想用“资本”属性(收入-(材料费用+其他费用)做同样的事情,这基本上是我需要做的,我一直在读这个操作应该通过“触发器”来完成关于sqlite,我一直在读一些帖子,但我不知道如何将其与我的情况相适应,你们能帮我一下吗?示例:

| capital | income | mat_expense | other_expense | net_profit |
    5         20         10              5             10
顺便说一句,这是一个查询,是否可以触发一个属性作为累加器?正如我之前解释的,我将升级一些属性,添加新值,每次我这样做时,我需要查询当前值并将其保存在一个变量中,然后我对新值求和,我认为这不是很有效


非常感谢您的阅读,我真的非常感谢您能给我的任何帮助。

在SQL中,您可以使用表达式定义新列,即:

select 
   income, 
   mat_expense, 
   other_expense, 
   income - (mat_expense + other_expense) as capital 
from your_table;
您将看到第四列名为“资本”

至于第二个问题,只要有可能,就应该使用这样的计算虚拟列。表达式可能非常复杂,包括SQL函数,甚至包括子查询。例如,您可以从与第一个表中的当前行相关的其他表行中添加值最小的列

通常,SQL语言是关于将源数据集转换为其他表示形式,将一些表转换为其他表


当您不能在单个SQL语句中计算结果集时,您可能必须计算中间临时数据/变量,可能是通过临时表/游标等,但这是最不应该做的事情。尽管如此,有时我们还是无法避免它

我不确定您的示例Mixas,我已经创建了表和列,我在考虑trigger,但你的意思是我可以在我的CREATE TABLE命令中声明吗?我的意思是,在我创建表的时候?不,我的意思是你可以在SELECT语句中使用“计算的虚拟列”。这些列中的值会随着源数据的更改而更改。SELECT语句通常发生在你创建一个游标时,或者更多关于这个问题:In数据库中有源数据(表)和该数据的视图。SELECT是从源数据创建的某种虚拟表(表,单个SELECT甚至可以在公共结果表中连接多个表)。SELECT是这样的视图,在源数据每次更改时计算(当然,您需要重新查询光标以获取更新的数据)这就是ThePoint Mixaz,我试图避免选择,当我想在一个表上设置一个或两个值时,我使用了许多数据库咨询,我认为这不是最好的方法,正如您计划的那样,我想我需要用新的收入值或费用值更新表,然后,我需要进行另一个咨询选择来设置资本价值,我也需要将该值设置为净利润,因此我需要进行另一次选择来设置净利润值?我非常感谢你的建议,但我认为我尝试实施的最佳有效方法是CreateYes,如果你想持续存储该计算(即不在每次选择时重新计算),然后您可以使用UPDATE语句(并且您需要在create TABLE语句中预先创建其他列)。您可以一次更新多个列。我不记得UPDATE语句的确切内容,但您可以咨询文档。Android的数据库。UPDATE()还允许指定多个字段。