我在访问中有一个表格(水果),形式为
水果,成本
我想更新表格,以便
水果,成本,成本等级
则成本等级将基于成本,例如:Cost = .89-成本等级=“ <1美元”,Cost = 2-成本等级=“ 1-5美元”等。
到目前为止,我有:
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...)
答案 0 :(得分:0)
除了修改当前表的结构以包含成本括弧描述*,然后根据Cost
字段所具有的值,使用固定值填充此附加字段外,替代方法可能是构造一个单独的字段表格,其中包含了成本范围的上限和下限以及相应的说明。
例如,假设您的水果表的外观类似于:
+----+-----------+-------+
| ID | fruit | cost |
+----+-----------+-------+
| 1 | Apple | £0.50 |
| 2 | Orange | £0.80 |
| 3 | Pineapple | £3.00 |
| 4 | Grape | £1.50 |
+----+-----------+-------+
您可以创建具有以下结构的成本括号表:
并使用以下成本分类数据填充它:
+----+--------+--------+-------------+
| ID | lbound | ubound | description |
+----+--------+--------+-------------+
| 1 | £0.00 | £1.00 | < £1 |
| 2 | £1.01 | £2.00 | < £2 |
| 3 | £2.01 | £5.00 | < £5 |
+----+--------+--------+-------------+
然后,您可以使用查询将两者链接起来:
select f.*, c.description
from fruit f left join cost_brackets c on (f.cost between c.lbound and c.ubound)
为上述示例数据提供以下结果:
+----+-----------+-------+-------------+
| ID | fruit | cost | description |
+----+-----------+-------+-------------+
| 1 | Apple | £0.50 | < £1 |
| 2 | Orange | £0.80 | < £1 |
| 3 | Pineapple | £3.00 | < £5 |
| 4 | Grape | £1.50 | < £2 |
+----+-----------+-------+-------------+
这种方法的独特优势在于,如果您随后决定更改成本范围及其相关描述的范围,则只需在一个地方进行更改即可,并且这些值会逐步所有引用“费用分类”表的查询。
鉴于您目前的做法,对成本范围的任何更改都将涉及:
Switch
函数中找到的硬编码成本括号(并希望您已经涵盖了所有内容)。**这似乎应该是一项一次性任务,并且是数据库设计的一部分,而不是要由代码执行的操作(除非您正在动态生成表?)