Database 从MS Access中的产品ID查找成本
我试图在MS Access中为订单的“总成本”创建一个计算字段。我的表格如下: 因此,我希望能够将订单:成本设置为计算字段,在该字段中,它获取与项目1、2、3、4和5中的每一项相关的成本,并将它们相加 另外,是否有一种更灵活的方法,可以在没有多个项目列的情况下向每个订单添加多个产品 提前谢谢Database 从MS Access中的产品ID查找成本,database,ms-access,relationship,Database,Ms Access,Relationship,我试图在MS Access中为订单的“总成本”创建一个计算字段。我的表格如下: 因此,我希望能够将订单:成本设置为计算字段,在该字段中,它获取与项目1、2、3、4和5中的每一项相关的成本,并将它们相加 另外,是否有一种更灵活的方法,可以在没有多个项目列的情况下向每个订单添加多个产品 提前谢谢 (我对此非常陌生,如果我遗漏了任何重要的内容,请道歉)目前,您的设计尚未“规范化” 您的表“订单”应分为两个表,如下所示: SELECT `Orders`.*, SUM(`Products`.`p
(我对此非常陌生,如果我遗漏了任何重要的内容,请道歉)目前,您的设计尚未“规范化” 您的表“订单”应分为两个表,如下所示:
SELECT
`Orders`.*, SUM(`Products`.`price`) AS `Cost`
FROM
`Orders`
LEFT JOIN `Order Items` ON (
`Orders`.`Order ID` = `Order Items`.`Order ID`
)
LEFT JOIN `Products` ON (
`Order Items`.`Product ID` = `Products`.`Product ID`
)
GROUP BY
`Orders`.`Order ID`
表格“订单”:
- 订单号
- 订购日期
- 成本(该字段的用途是什么?)
- 订单号
- 产品ID
因此,“订购物品”可以包含无限的订购物品列表。然后你可以很容易地创建任何类型的求和和和其他计算 目前,您的设计尚未“规范化” 您的表“订单”应分为两个表,如下所示:
SELECT
`Orders`.*, SUM(`Products`.`price`) AS `Cost`
FROM
`Orders`
LEFT JOIN `Order Items` ON (
`Orders`.`Order ID` = `Order Items`.`Order ID`
)
LEFT JOIN `Products` ON (
`Order Items`.`Product ID` = `Products`.`Product ID`
)
GROUP BY
`Orders`.`Order ID`
表格“订单”:
- 订单号
- 订购日期
- 成本(该字段的用途是什么?)
- 订单号
- 产品ID
因此,“订购物品”可以包含无限的订购物品列表。然后你可以很容易地创建任何类型的求和和和其他计算 目前,您的设计尚未“规范化” 您的表“订单”应分为两个表,如下所示:
SELECT
`Orders`.*, SUM(`Products`.`price`) AS `Cost`
FROM
`Orders`
LEFT JOIN `Order Items` ON (
`Orders`.`Order ID` = `Order Items`.`Order ID`
)
LEFT JOIN `Products` ON (
`Order Items`.`Product ID` = `Products`.`Product ID`
)
GROUP BY
`Orders`.`Order ID`
表格“订单”:
- 订单号
- 订购日期
- 成本(该字段的用途是什么?)
- 订单号
- 产品ID
因此,“订购物品”可以包含无限的订购物品列表。然后你可以很容易地创建任何类型的求和和和其他计算 目前,您的设计尚未“规范化” 您的表“订单”应分为两个表,如下所示:
SELECT
`Orders`.*, SUM(`Products`.`price`) AS `Cost`
FROM
`Orders`
LEFT JOIN `Order Items` ON (
`Orders`.`Order ID` = `Order Items`.`Order ID`
)
LEFT JOIN `Products` ON (
`Order Items`.`Product ID` = `Products`.`Product ID`
)
GROUP BY
`Orders`.`Order ID`
表格“订单”:
- 订单号
- 订购日期
- 成本(该字段的用途是什么?)
- 订单号
- 产品ID
是的。你必须规范化你的数据(bing/google),插入一个包含订单行的表格。然后,您将在订单表中的这一关系与订单行和产品之间的另一关系之间建立一种关系 你的设计是错误的。我建议您阅读一些关于
数据库规范化的教程
,并纠正您的设计。您还可以找到/下载臭名昭著的Northwind数据库,该数据库曾作为示例随Access提供。这是一个可用且设计合理的订单数据库,您可以将其用作起点。您的设计是错误的。我建议您阅读一些关于
数据库规范化的教程
,并纠正您的设计。您还可以找到/下载臭名昭著的Northwind数据库,该数据库曾作为示例随Access提供。这是一个可用且设计合理的订单数据库,您可以将其用作起点。您的设计是错误的。我建议您阅读一些关于
数据库规范化的教程
,并纠正您的设计。您还可以找到/下载臭名昭著的Northwind数据库,该数据库曾作为示例随Access提供。这是一个可用且设计合理的订单数据库,您可以将其用作起点。您的设计是错误的。我建议您阅读一些关于
数据库规范化的教程
,并纠正您的设计。您还可以找到/下载臭名昭著的Northwind数据库,该数据库曾作为示例随Access提供。它是一个可用且设计合理的Orders数据库,您可以将其作为起点。正如其他人所强调的,表的结构存在一个根本问题。为了回答您的问题,我建议您首先调整表模式 因此,我将首先回答你的第二个问题: 是否有更灵活的方法向每个订单添加多个产品,而无需多个项目列 对。通常,您需要使用第二个表来存储订单项。这种类型的表通常称为“桥接表”,它允许您为每个订单存储无限数量的项目。让我们将此表称为“订单项目” 另外,我假设您的表Products、Products_1、Products_2、Products_3和Products_4都是同一个表的接口?而不是5个表都包含产品数据的副本。我稍后再谈这个问题 让我们重新开始
+----------+------------+----------+
| Order ID | Product ID | Quantity |
+----------+------------+----------+
| 1 | 2 | 2 |
| 1 | 3 | 1 |
| 1 | 5 | 1 |
+----------+------------+----------+
SELECT
`Orders`.*, SUM(`Products`.`price` * `Order Items`.`Quantity`) AS `Cost`
FROM
`Orders`
LEFT JOIN `Order Items` ON (
`Orders`.`Order ID` = `Order Items`.`Order ID`
)
LEFT JOIN `Products` ON (
`Order Items`.`Product ID` = `Products`.`Product ID`
)
GROUP BY
`Orders`.`Order ID`