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