【发布时间】:2017-04-25 03:16:04
【问题描述】:
我目前正在用 SQL 编写一个存储过程来打印多个表的结果以查找购买的前十名产品,但我收到语法错误
“列名'ProductID'无效”。
这出现在 sod.ProductID 的第二个 INNER JOIN 语句中
下面是我的代码
CREATE PROCEDURE usp_top10ProfitableProducts
AS
BEGIN
SELECT TOP 10 sp.StoreProductID, sup.ProductName, sum(sod.Quantity) AS quantitysold, (sum(sod.Quantity) * sum(sod.unitPrice)) - (sum(sod.Quantity) * sum(sp.costPrice)) AS Profit
FROM SalesOrderDetails sod
INNER JOIN StoreProduct sp ON sp.StoreProductID = sod.StoreProductID
INNER JOIN SupplierProduct sup ON sup.ProductID = sod.ProductID
WHERE Quantity > 0
END
提前致谢。
编辑** 下面也是我的实体关系图。 “ProductID”位于“SupplierProduct”中
【问题讨论】:
-
SalesOrderDetails中是否有ProductID列? -
没有 StoreProductID"SalesOrderDetails sod" 也没有 ProductID
-
我认为你的表结构不足以得到结果查询..
-
不,
SalesOrderDetails中没有ProductID。但我认为 INNER JOIN 不会连接这些表。或者这不是内部连接的工作原理? -
storeproductid和supplierproductid是否相互一致?对于任何给定项目,storeproduct和supplierproduct表中的id是否相同?
标签: mysql sql database tsql ssms