Помогите написать хранимую процедуру / ошибка SQL-запроса

#stored-procedures

#хранимые процедуры

Вопрос:

У меня есть таблица tblcategory со столбцами categoryid , shopid , title, logicalcode .

У меня есть вторая таблица tblproduct со столбцами productid, shopid, producttitle ,price ,logicalcode , available .

У меня есть третья таблица categoryproduct со столбцами categoryproductid, categoryid, productid

У меня есть представление в виде таблицы для отображения продуктов в заданной категории со столбцами producttitle и logicalcode .

Я написал хранимую процедуру с входным параметром as categoryid (обязательным) для получения списка продуктов в этой категории:

 @categoryid int
AS
BEGIN
  SELECT P.Title, P.LogicalCode 
  FROM tblProduct AS P 
  JOIN  tblCategory AS C  
  WHERE P.LogicalCode=C.LogicalCode AND
  WHERE C.CategoryID=@categoryid    
END
  

Но я получил ошибку, близкую к условию «ГДЕ»

Кто-нибудь, пожалуйста, поможет мне?

Комментарии:

1. является ли CategoryID значением INT? Очевидно, что у вас есть два неправильных WHERE’а, но вы упоминаете ниже, что вы удалили один, и он по-прежнему выдает ошибки.

Ответ №1:

У вас есть два WHERE предложения. Это должно быть:

WHERE P.LogicalCode=C.LogicalCode AND
C.CategoryID=@categoryid

Редактировать

Хорошо, попробуйте

 SELECT P.Title,P.LogicalCode  
FROM tblProduct P  
JOIN tblCategory C   
ON P.LogicalCode=C.LogicalCode  
WHERE C.CategoryID=@categoryid
  

Комментарии:

1. Не беспокойтесь — это была комбинация двух WHERE и плохой JOIN

Ответ №2:

Должно быть:

 SELECT P.Title,P.LogicalCode 
FROM tblProduct AS P JOIN  tblCategory AS C    
WHERE P.LogicalCode=C.LogicalCode 
AND  C.CategoryID=@categoryid   
  

Комментарии:

1. Я получил такую же ошибку, как это сообщение 156, уровень 15, состояние 1, процедура uspCategoryFetch, строка 10 С неправильным синтаксисом возле ключевого слова ‘WHERE’.

2. Вам также необходимо указать, с помощью чего вы объединяете P и C. Например…. ИЗ tblProduct P ПРИСОЕДИНИТЕСЬ К tblCategory C С ПОМОЩЬЮ P.CategoryKey = C.ID …..