正在创建新的装备组合包.DB Design或SQL(Alter Table、Order By、Select)



我目前正在为客户订单开发一个基本数据库。我的问题是,一个表中的字段(称为EquipmentPerOption)与另一个表(Equipment备添加一条记录应向EquipmentPerOption中添加一个具有新记录名称的新列。

例如:

**Equipment Table**
     Equipment     Price
       Hose        $1.00 
       Shovel      $2.00 
       Hoe         $3.00 
**Equipment per Option Table**
    OrderOption  Hose  Shovel  Hoe
    1             1      0      2
    2             3      2      1
    3             0      1      3
    4             1      1      1 

因此,基本上,我现在在菜单上有一个按钮,它将带我进入设备的添加新记录屏幕。如何使其在添加完设备的新记录后作为新列出现在EquipmentPerOption表中?理想情况下:

    OrderOption  Hose  Shovel  Hoe  (New Equipment)
    1             1      0      2         0 
    2             3      2      1         0
    3             0      1      3         0
    4             1      1      1         0

我一直在摆弄SQL,并将其作为查询的SQL代码,该查询将在单击设备窗体底部的"检查"按钮后运行。(显然,它会在运行查询之前保存记录)

 ALTER TABLE EquipmentPerOption
    Add
    SELECT TOP (1) *
    FROM
      ( SELECT TOP (1) *
        FROM Equipment
        ORDER BY created_date DESC) Short Interger

所以我的问题是为什么这个代码是错误的?我该如何修复它以达到预期的结果?或者我设置的数据库错误了,应该用不同的表结构重新开始吗?

如果您发现自己必须添加列才能处理简单的事务,那么这表明数据库设计缺少了一些东西。

给定您的设备表:

Equipment Table
     Id   Equipment     Price
      1    Hose        $1.00 
      2    Shovel      $2.00 
      3    Hoe         $3.00 

一捆这样的东西会有一个名字,可能还有一个价格:

EquipmentBundle
     Id   Name             Price
      1   Hoe And Hose      ...
      2   H-S-H Pkg         ...

然后是一个将某些设备记录与给定捆绑包关联的表:

EquipmentBundleItems
     Id   EquipmentId    Quantity    
      1      1              2       ; Bundle 1 has 2 hoses
      1      3              1       ;  and 1 hoe
      2      1              3       ; Bundle 2 has 3 hoses
      2      2              2       ;   and 2 shovels
      2      3              1       ;   and 1 hoe

假设所有当前设备都已经在设备项表中,创建新的Bundle只是创建一个新的EquipmentBundle记录并通过EquipmentBundleItems表将相关项与其关联。

最新更新