INNER JOIN和多个表的列名无效

时间:2017-04-25 03:16:05

标签: mysql sql database tsql ssms

我目前在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'

enter image description here

2 个答案:

答案 0 :(得分:0)

可能该字段在其中一个表中不存在。另一点:分组失踪。

GROUP BY sp.StoreProductID, sup.ProductName

答案 1 :(得分:0)

要在两个表之间进行连接,两个表中的连接列(在上面的例子中为ProductID)应该可用,否则sql将无法进行连接。 根据表结构,SalesOrderDetails没有列ProductID,这就是它给出错误的原因,你需要加入相应表中存在的cloumns