SQL - Erreur #1093

Fermé
Dimistik Messages postés 51 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 25 novembre 2010 - 3 déc. 2009 à 09:05
Dimistik Messages postés 51 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 25 novembre 2010 - 3 déc. 2009 à 10:54
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

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 51 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 25 novembre 2010
3 déc. 2009 à 10:54
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