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 :

delete avec une jointure mysql


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Par défaut delete avec une jointure mysql
    Bonjour. Je voudrais une confirmation ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE FROM `stock_gpe_name`
             WHERE id_stock_gpe IN (
                        SELECT id_stock_gpe
                        FROM  `stock_gpe_name`as sgn
                        LEFT JOIN `stock_gpe`as sg ON sgn.id_stock_gpe= sg.id_gpe
                        WHERE sg.id_gpe IS NULL )
    Ce code ne fonctionne pas. Mysql répond:
    You can't specify target table 'stock_gpe_name' for update in FROM clause
    Faut-il obligatoirement passer par une table temporaire pour arriver à ses fins ?
    Merci.

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Même réponse qu'à ton autre question, il doit suffire de masquer la table cible sous un alias dans la sous-requête.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre éclairé
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Par défaut
    J'ai fais comme ceci mais ce n'est pas encore ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE FROM `stock_gpe_name` 
             WHERE id_stock_gpe IN (
                        SELECT sgn.id_stock_gpe
                        FROM  `stock_gpe_name`as sgn
                        LEFT JOIN `stock_gpe`as sg ON sgn.id_stock_gpe= sg.id_gpe
                        WHERE sg.id_gpe IS NULL )
    On ne peut pas mettre d'allias dans la première ligne. Ça ne fonctionne pas non plus.
    Il y a un truc que je n'ai pas dû bien comprendre....

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Essaie comme ci-dessous, sur un jeu d'essai d'abord, au cas où.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE FROM stock_gpe_name s
    INNER JOIN
    (
    	SELECT sgn.id_stock_gpe
    	FROM  stock_gpe_name AS sgn
    	LEFT JOIN stock_gpe AS sg ON sgn.id_stock_gpe = sg.id_gpe
    	WHERE sg.id_gpe IS NULL 
    ) tmp ON tmp.id_stock_gpe = s.id_stock_gpe
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre éclairé
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Par défaut
    Je disais un post plus haut qu'on ne pouvait pas mettre d'allias dans la 1ere ligne. Voila le résultat de la Cde.
    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 's INNER JOIN ( SELECT sgn.id_stock_gpe FROM stock_gpe_name AS sgn LEFT JOIN ' at line 1

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELETE stock_gpe_name
    FROM stock_gpe_name s
    INNER JOIN
    (
    	SELECT sgn.id_stock_gpe
    	FROM  stock_gpe_name AS sgn
    	LEFT JOIN stock_gpe AS sg ON sgn.id_stock_gpe = sg.id_gpe
    	WHERE sg.id_gpe IS NULL 
    ) tmp ON tmp.id_stock_gpe = s.id_stock_gpe
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [MySQL] Faire des delete MySQL avec une jointure
    Par Voyageur Du Net dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/07/2010, 08h39
  2. Delete avec une jointure
    Par mazizou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/07/2007, 13h24
  3. [MySQL] probléme de repetition avec une jointure
    Par kenzo83220 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/11/2006, 17h24
  4. Réponses: 3
    Dernier message: 06/01/2006, 08h57
  5. Dialoguer avec une BDD MySQL en language C
    Par veridik dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2005, 11h58

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