2010-01-07 5 views
0

PHPmyAdmin은이 mySQL을 거부하고 있으며, 실제로 실행해야 할 필요는 없으며, uni 작업이 필요하고 그냥 들여 보내야합니다.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 

이다; 어떤 도움을 받았는지를 LIMIT와 END로 알기 위해 내가 어리 석 었는가?

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

+0

최종 //이 끝난 후 이동이 아닌 LIMIT 0,5 후에해야합니다 동의하지 않습니다 발생합니다. 한계 0,5에 a를 입력해야합니다. –