IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

ERROR 1093 (HY000): You can't specify target table 'especes' for update in FROM claus


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut ERROR 1093 (HY000): You can't specify target table 'especes' for update in FROM claus
    Bonjour à tous,

    J'ai fait une jolie requête qui m'a pris pas mal de temps...lol
    Manque de pot, ça veut pas pas marcher...

    ERROR 1093 (HY000): You can't specify target table 'especes' for update in FROM clause

    qu'il me dit...

    Donc j'ai 2 tables, table1 et table2.
    table1 je l'ai recréé en copie_table1 pour pouvoir tester mes requêtes.
    Jusque là pas de probleme.
    Dans mes 2 tables , copie_table1 et table2 j'ai le même id sous 2 noms differents.
    id1 dans copie_table1 et id1bis dans table2

    Mais dans copie_table1 j'ai 60 000 id1 et dans table2 j'en ai 40 000 id1bis.
    Tous les id1bis figurent dans copie_table1 (id1bis = id1)
    Donc j'en ai 20 000 dans copie_table1 qui ne figurent pas dans table2.
    Ceux là , je veux les effacer de copie_table1

    J'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE FROM copie_table1 
    WHERE (SELECT id1 FROM copie_table1 
    LEFT JOIN table2 
    ON copie_table1.id1 = table2.id1bis 
    WHERE id1bis IS NULL);
    La Sous requête marche bien. J'ai bien mes 20 000 entrées mais la requête globale est fausse car je ne peux pas faire DELETE ou UPDATE de copie_table1 si je l'utilise dans la sous-requete...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    
    ERROR 1093 (HY000): You can't specify target table 'especes' for update in FROM clause
    Comme ce sont les memes colonnes et les memes champs j'ai remplacé copie_table1 par table1 dans la sous requête mais ça ne marche pas non plus...

    Je l'ai tourné ds tous les sens, je ne parviens pas à contourner la difficulté...

    Si qqn avait la soluce... ça me rendrait vraiment service...

    Merci beaucoup par avance.

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    Le message me semble normal

    En effet, la syntaxe du delete est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM table WHERE condition
    Et là, je ne vois pas de condition clairement exprimée genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE id1 IN (select...)

  3. #3
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    Que veux-tu faire ?

    Supprimer les éléments de copie_table1
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM copie_table1
    Dont l'id ne figure pas dans la table2
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE copie_table1.id1 NOT IN (
        SELECT id1bis FROM table2 )
    Tout simplement !

  4. #4
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    Rhaaaaaaaaaaaaaaaa ! Zut!

    Oui effectivement, c'etait simple!!!

    En fait ce qui m'a induit en erreur, c'est que les 2 id portaient des noms dfferents...
    Je ne pensais pas qu'on pouvait ecrire
    ... id1 NOT IN (select id1bis ...)
    Je pensais qu'il fallait mettre qq part id1 = id1bis ou qqch comme ça...

    En tout cas, MERCI INFINIMENT pour votre coup de main ! ça me depanne bien!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/03/2012, 17h31
  2. Réponses: 1
    Dernier message: 17/10/2011, 14h32
  3. Réponses: 2
    Dernier message: 26/04/2011, 09h58
  4. Can't specify target in FROM clause
    Par Linio dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/12/2010, 15h00
  5. Réponses: 2
    Dernier message: 17/03/2008, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo