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

Sql 指定的字段(价格)可以引用多个表,sql,ms-access,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 Or

指定的字段(价格)可以引用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;

指定要使用的表的名称:

OrderDetails.[Price]*[BatchSize]
或:


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

在公式中使用
全价
的字段时,您没有指定表的名称,如果您的帖子标题碰巧与导致您发布帖子的错误消息相对应,则
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个字段)之前。可能
产品
表中的
价格
是购买价格,客户必须支付的价格存储在
订单详情
表中(类似于Northwind样本数据库)

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;