2010-01-07 5 views
0

PHPmyAdmin ne cesse de rejeter ce mySQL im assez sûr de son droit et n'a pas vraiment besoin de le faire fonctionner, son travail uni et juste à la main, il me semble juste.Check mySQL is Correct

l'erreur réelle que je reçois est

#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 

J'ai essayé de jouer avec l'ajout et la suppression; LIMITER et TERMINER sans quoi, serais-je stupide?

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 

merci^_^

Répondre

0

Vous devez changer le séparateur. Au moins dans le client MySQL vous faites ceci:

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 
+0

génère une erreur ne sera pas accepter la « DELIMITER // » – Gwilym

+0

le // final devrait aller après la fin et non après la LIMITE 0,5. A la limite 0,5 vous devriez mettre un; –