我在表单中有一个表(Fruit)访问 水果,成本和我想更新表,以便我将有水果,成本,成本支架 成本等级将基于成本,例如成本= .89 - 成本支架='<1美元',成本= 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...)
而不是修改当前表的结构以包含成本约束描述*,然后使用取决于Cost
字段所持有的值的固定值填充此附加字段,替代方法可能是构造包含上限和下限的单独表成本括号和相应的说明。
例如,假设您的Fruit表看起来像以下行:
+----+-----------+-------+
| ID | fruit | cost |
+----+-----------+-------+
| 1 | Apple | £0.50 |
| 2 | Orange | £0.80 |
| 3 | Pineapple | £3.00 |
| 4 | Grape | £1.50 |
+----+-----------+-------+
您可以使用以下结构创建Cost Brackets表:
并使用以下费用括号数据填充它:
+----+--------+--------+-------------+
| 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
函数中找到的硬编码成本括号(并希望您已经涵盖了所有这些)。*这似乎应该是一次性任务和数据库设计的一部分,而不是代码执行的操作(除非您正在动态生成表?)