В настоящее время я пишу хранимую процедуру в 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»
2 ответа
Вероятно, поле не существует в одной из таблиц. Еще один момент: группа по отсутствующим.
GROUP BY sp.StoreProductID, sup.ProductName
Для объединения двух таблиц объединяющий столбец (в приведенном выше случае ProductID) должен быть доступен в обеих таблицах, иначе sql не сможет выполнить соединение. В соответствии со структурой таблицы SalesOrderDetails не имеет столбца ProductID, поэтому он выдает ошибку, вам нужно объединиться с cloumns, которые существуют в соответствующих таблицах
Новые вопросы
mysql
MySQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом (RDBMS), использующая язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. Д. Это разные БД, которые все используют свои собственные диалекты SQL для управления данными.