Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
Sql 要更新MS Access中的表以添加列并基于其他列进行填充吗_Sql_Ms Access_Switch Statement_Sql Update_Alter - Fatal编程技术网

Sql 要更新MS Access中的表以添加列并基于其他列进行填充吗

Sql 要更新MS Access中的表以添加列并基于其他列进行填充吗,sql,ms-access,switch-statement,sql-update,alter,Sql,Ms Access,Switch Statement,Sql Update,Alter,我在access中有一张表格(水果),格式为 水果,成本 我想更新表以便 水果、成本、成本等级 而成本范围将基于成本,例如成本=.89-成本范围=',而不是修改当前表的结构以包含成本范围说明*,然后根据成本字段持有的值,使用固定值填充此附加字段,另一种方法是构造一个单独的表,其中包含成本括号的上下限和相应的描述 例如,假设您的水果表看起来大致如下: +----+-----------+-------+ |ID |水果|成本| +----+-----------+-------+ |1 |苹果|

我在access中有一张表格(水果),格式为
水果,成本 我想更新表以便 水果、成本、成本等级

而成本范围将基于成本,例如成本=.89-成本范围=',而不是修改当前表的结构以包含成本范围说明*,然后根据
成本
字段持有的值,使用固定值填充此附加字段,另一种方法是构造一个单独的表,其中包含成本括号的上下限和相应的描述

例如,假设您的水果表看起来大致如下:

+----+-----------+-------+
|ID |水果|成本|
+----+-----------+-------+
|1 |苹果| 0.50英镑|
|2 |橙色| 0.80英镑|
|3 |菠萝| 3.00英镑|
|4 |葡萄| 1.50英镑|
+----+-----------+-------+
您可以创建具有以下结构的成本括号表:

并使用以下成本等级数据进行填充:

+----+--------+--------+-------------+
|ID | lbound | ubound |说明|
+----+--------+--------+-------------+
|  1 | £0.00  | £1.00  | < £1        |
|  2 | £1.01  | £2.00  | < £2        |
|  3 | £2.01  | £5.00  | < £5        |
+----+--------+--------+-------------+
然后,您可以使用以下查询将两者链接:

选择f.*,c说明
从水果f左连接成本_括号c开(f.成本在c.lbund和c.ubund之间)
对上述样本数据得出以下结果:

+----+-----------+-------+-------------+
|ID |水果|成本|描述|
+----+-----------+-------+-------------+
|1 |苹果| 0.50 |<1|
|2 |橙色| 0.80 |<1|
|3 |菠萝| 3.00 |<5英镑|
|4 |葡萄| 1.50 |<2|
+----+-----------+-------+-------------+
这种方法的显著优点是,如果您随后决定更改成本括号及其相关说明的范围,则只需在一个位置进行更改,并且这些值将通过引用成本括号表的所有查询进行级联

鉴于,按照您目前的方法,成本等级的任何变更将涉及:

  • 更改每个查询中使用的
    开关
    函数中的硬编码成本括号(希望您已经涵盖了它们)
  • 更新包含成本括号说明的每个表中的值,并希望表中显示的值已适当更新并反映当前的成本括号


*这似乎应该是一次性任务,也是数据库设计的一部分,而不是由代码执行的操作(除非您正在动态生成表?)

而不是修改当前表的结构以包含成本等级说明*,然后根据
成本
字段持有的值,使用固定值填充此附加字段,另一种方法是构造一个单独的表,其中包含成本括号的上下限和相应的描述

例如,假设您的水果表看起来大致如下:

+----+-----------+-------+
|ID |水果|成本|
+----+-----------+-------+
|1 |苹果| 0.50英镑|
|2 |橙色| 0.80英镑|
|3 |菠萝| 3.00英镑|
|4 |葡萄| 1.50英镑|
+----+-----------+-------+
您可以创建具有以下结构的成本括号表:

并使用以下成本等级数据进行填充:

+----+--------+--------+-------------+
|ID | lbound | ubound |说明|
+----+--------+--------+-------------+
|  1 | £0.00  | £1.00  | < £1        |
|  2 | £1.01  | £2.00  | < £2        |
|  3 | £2.01  | £5.00  | < £5        |
+----+--------+--------+-------------+
然后,您可以使用以下查询将两者链接:

选择f.*,c说明
从水果f左连接成本_括号c开(f.成本在c.lbund和c.ubund之间)
对上述样本数据得出以下结果:

+----+-----------+-------+-------------+
|ID |水果|成本|描述|
+----+-----------+-------+-------------+
|1 |苹果| 0.50 |<1|
|2 |橙色| 0.80 |<1|
|3 |菠萝| 3.00 |<5英镑|
|4 |葡萄| 1.50 |<2|
+----+-----------+-------+-------------+
这种方法的显著优点是,如果您随后决定更改成本括号及其相关说明的范围,则只需在一个位置进行更改,并且这些值将通过引用成本括号表的所有查询进行级联

鉴于,按照您目前的方法,成本等级的任何变更将涉及:

  • 更改每个查询中使用的
    开关
    函数中的硬编码成本括号(希望您已经涵盖了它们)
  • 更新包含成本括号说明的每个表中的值,并希望表中显示的值已适当更新并反映当前的成本括号


*这似乎应该是一次性任务,也是数据库设计的一部分,而不是由代码执行的操作(除非您正在动态生成表?

为什么要使用代码更改表?这不是一次性的活动吗?在“表设计”视图中手动执行此操作。然后运行更新操作。但是,保存计算值并不是真正必要的。你能做这个计算吗
        Alter Table [Fruit]
        Add  [Cost Bracket] Varchar(50) 
       Update [Cost Bracket]
        Set [Cost Bracket] = Switch(Cost<1,'<1 dollar',Cost Between 1 and 
        5,'1-  5 dollars' etc...)