Controllare mySQL sia corretto
-
19-09-2019 - |
Domanda
phpMyAdmin mantiene respingere questo im mySQL abbastanza sicuro che il suo diritto e in realtà non hanno bisogno di correre, il suo lavoro uni e solo a portata di mano in, sembra giusto per me.
l'errore effettivo ottengo è
#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
Ho provato a giocare con l'aggiunta e la rimozione; Per limitare e END inferi che aiutano, erano sono io stupido?
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
grazie ^ _ ^
Soluzione
È necessario modificare il delimitatore. Almeno nel client di MySQL si esegue questa operazione:
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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow