Вопрос

PHPmyAdmin продолжает отклонять этот MySQL, я почти уверен, что он прав, и на самом деле он не нужен для запуска, он работает универ, и его просто нужно сдать, мне кажется, он подходит.

фактическая ошибка, которую я получаю, это

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 23 

Я пробовал играть с добавлением и удалением ;ОГРАНИЧИТЬ и ЗАКОНЧИТЬ ничего из этого не поможет, я был глуп?

CREATE PROCEDURE topFive(
   IN PID VARCHAR(6),
   IN CID VARCHAR(6)
)
BEGIN

SELECT `OrderItem`.`ProductID` , COUNT(*) AS `Popularity`
FROM `OrderItem`,
(
SELECT `Order`.`OrderID`
FROM `OrderItem`,`Order`
WHERE
(`Order`.`OrderID`=`OrderItem`.`OrderID`)
AND 
(`OrderItem`.`ProductID`=PID)
AND
(`Order`.`CustomerID`!=CID)
) AS `ORDER_ID_TABLE`
WHERE  (`OrderItem`.`OrderID` = `ORDER_ID_TABLE`.`OrderID`)
GROUP BY `OrderItem`.`ProductID`
ORDER BY `Popularity`
LIMIT 0,5

END

спасибо ^_^

Это было полезно?

Решение

Вам нужно изменить разделитель.По крайней мере, в клиенте MySQL вы делаете это:

DELIMITER //

CREATE PROCEDURE topFive(
   IN PID VARCHAR(6),
   IN CID VARCHAR(6)
)
BEGIN

SELECT `OrderItem`.`ProductID` , COUNT(*) AS `Popularity`
FROM `OrderItem`,
(
SELECT `Order`.`OrderID`
FROM `OrderItem`,`Order`
WHERE
(`Order`.`OrderID`=`OrderItem`.`OrderID`)
AND 
(`OrderItem`.`ProductID`=PID)
AND
(`Order`.`CustomerID`!=CID)
) AS `ORDER_ID_TABLE`
WHERE  (`OrderItem`.`OrderID` = `ORDER_ID_TABLE`.`OrderID`)
GROUP BY `OrderItem`.`ProductID`
ORDER BY `Popularity`
LIMIT 0,5//

END
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top