SQL - Erreur #1093

Dimistik Messages postés 58 Statut Membre -  
Dimistik Messages postés 58 Statut Membre -
Bonjour,

Via une requête SQL, Je tente de supprimer ma dernière commande. Donc pour réaliser cela, je fais la requête suivante :

DELETE FROM commande WHERE commande.numcommande = (SELECT MAX( com.numcommande )
FROM commande AS com)
LIMIT 1 


Le problème, c'est que je tombe sur l'erreur 1093 :

#1093 - You can't specify target table 'commande' for update in FROM clause 


Et bon, je comprend pas trop pourquoi là... Quelqu'un aurait une solution? Merci d'avance.

1 réponse

swed
 
Bonjour,

A vue d'oeil, je dirais que le AS est mal utilisé.
D'ailleurs, j'ai testé cette requête sur Oracle10g, et il n'accepte même pas la syntaxe.

Pour spécifier un 'alias' pour une table dans le FROM, tu n'a pas besoin d'utiliser AS.
Par ex: SELECT P1.NOM FROM PERSONNE P1;

Je pense que tu pourrais tester comme ça :
DELETE FROM commande C1 WHERE C1.numcommande = (SELECT MAX(C2.numcommande)
FROM commande C2)

Le "LIMIT 1" ne fonctionnera pas sous ORACLE, où il faudra utiliser "AND ROWNUM=1"

Quel est ton SGBD ?

Bonne journée!
0
Dimistik Messages postés 58 Statut Membre
 
Je suis sous PhpMyAdmin (MySQL 5.0.45).

J'ai tenté ta requête, en vain...

Il me dit :
#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 'WHERE C1.numcommande = (SELECT MAX(C2.numcommande)
FROM commande C2) LIMIT 1' at line 1 
0