指定的字段(价格)可以引用多个表

时间:2018-10-31 10:35:35

标签: sql ms-access

指定的字段(价格)可以引用SQL语句的from子句中列出的多个表。

SELECT Customers.FirstName, Customers.LastName, Orders.OrderDate, Products.ProductName, Products.Price, Products.BatchSize, [Price]*[BatchSize] AS [Full Price]
FROM Products INNER JOIN ((Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID)  ON Products.ProductID = OrderDetails.ProductID;

2 个答案:

答案 0 :(得分:0)

指定要使用的表的名称:

OrderDetails.[Price]*[BatchSize]

或:

Products.[Price]*[BatchSize]

答案 1 :(得分:0)

是的,没错。与字段BatchSize相同。

Full Price的公式中使用字段时,您没有指定表的名称,并且如果帖子的标题很可能与导致您发布帖子的错误消息相对应,则在那里也是Price表中一个名为OrderDetails的字段,因此Access在计算值时不知道要使用两个字段中的哪个(在查询中访问两个表时)。您想做的大概是以下内容:

SELECT Customers.FirstName, Customers.LastName, Orders.OrderDate, Products.ProductName,
  Products.Price, Products.BatchSize, Products.[Price]*Products.[BatchSize] AS [Full Price]
FROM Products INNER JOIN 
  ((Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) INNER JOIN 
    OrderDetails ON Orders.OrderID = OrderDetails.OrderID)
  ON Products.ProductID = OrderDetails.ProductID;

但是:如果您的OrderDetails表还包含一个Price,请不要简单地告诉Access要使用Products表中的字段,而要询问您自己(或知道数据库结构的人)要指定哪个表(也用于查询中的第5个字段)。也许Price表中的Products购买价格,而客户必须支付的价格存储在OrderDetails表中(类似于Northwind示例数据库)。