2010-01-07 98 views
0

phpMyAdmin的不斷拒絕這個MySQL Im相當肯定它的權利,實際上並不需要它來運行,其單向工作,只需要交,看起來我的權利。檢查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 

感謝^ _^

回答

0

你必須改變的分隔符。至少在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 
+0

拋出一個錯誤不會接受「DELIMITER //」 – Gwilym 2010-01-07 22:52:01

+0

最終//應該去中結束後,沒有極限的0,5之後。 在限制0,5你應該把一個; – 2010-01-07 23:14:37