В настоящее время я пишу хранимую процедуру в SQL, чтобы распечатать результаты из нескольких таблиц, чтобы найти первые десять купленных продуктов, но я получаю синтаксическую ошибку

Msgstr "Неверное имя столбца 'ProductID'".

Это появляется на 2-й инструкции INNER JOIN на sod.ProductID

Мой код ниже

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

-1
wichaelmilson 25 Апр 2017 в 06:16

2 ответа

Лучший ответ

Вероятно, поле не существует в одной из таблиц. Еще один момент: группа по отсутствующим.

GROUP BY sp.StoreProductID, sup.ProductName
0
Igor Grava 25 Апр 2017 в 03:27

Для объединения двух таблиц объединяющий столбец (в приведенном выше случае ProductID) должен быть доступен в обеих таблицах, иначе sql не сможет выполнить соединение. В соответствии со структурой таблицы SalesOrderDetails не имеет столбца ProductID, поэтому он выдает ошибку, вам нужно объединиться с cloumns, которые существуют в соответствующих таблицах

0
Nandula 25 Апр 2017 в 04:42