2016-07-26 20 views
1

我目前正在为客户订购基本数据库。我的问题是一个表中的字段(称为EquipmentPerOption)对应于另一个表中的记录(设备)。理论上增加一个记录到设备应该添加一个新的列到EquipmentPerOption与新记录的名称。创建新设备组合包。数据库设计或SQL(Alter Table,Order By,Select)

例如:

**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 

所以我的问题是为什么这段代码错了?我如何解决它以达到预期的结果?或者我是否设置了错误的数据库,并且应该重新开始使用不同的表格结构?

+2

当您添加记录时发现数据库结构需要更改时,可以非常确定您没有正确的数据库结构。你能否提供更多有关设备选件的信息,以及它如何记录?我看不出你想要用你的数据做什么。 –

+0

@MikeChristie因此,当客户下单时,他们会选择一套“订单选项”,每个订单选项都有不同数量的设备。 (我们通常不单独销售产品,而是作为一套产品,客户需要不同的套装或选项。)**每个选项的**表格几乎可以显示每种选项附带哪些设备。我想要做的是我们要通过**设备**表格表格添加一件设备,所述设备将自动显示为**每件选项**表格上的新列。 – Swaze

回答

0

如果您发现自己不得不添加列以处理简单事务,这是db设计缺少某些东西的标志。

鉴于你的装备表:

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 

假定所有当前设备已经在设备项目表中,创建一个新的捆绑包只是创建一个新的EquipmentBundle记录并通过EquipmentBundleItems表将关联的项目与它关联。