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 :

Requête UPDATE avec jointure [MySQL-5.1]


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Points : 95
    Points
    95
    Par défaut Requête UPDATE avec jointure
    Bonjour,

    j'essaie actuellement de faire un update de données en fonction d'une autre table, j'ai donc écrit ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    update rh 
       set rh.colToDelete = 1
      from MonSchema.MaTable1 t1
    INNER JOIN MonSchema.MaTable2 t2 on t1.ID_REF = t2.ID_REF
    Mais ça ne passe pas, pouvez-vous me dire pourquoi?

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2004
    Messages : 126
    Points : 61
    Points
    61
    Par défaut
    Bonjour, il vaut mieux que le résultat de votre jointure soit stocké dans une table intermédiaire ou bien une procédure stockée et procéder à l'update, même question temps de réponse, c'est plus intéressant.
    Bon courage.

  3. #3
    Membre régulier Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Points : 95
    Points
    95
    Par défaut
    En fait la table 2 est déjà une table intermédiaire.
    J'essaie de trouver une solution à une suppression de données dans la table 1.
    Ma table 1 contient 2,5 million d'enregistrement et ma table 2 contient 7000 Id d'enregistrements à supprimer dans la table 1.

    Si je fais un DELETE avec un IN.... ça n'accouche pas avant le redémarrage des serveurs.

    En passant par un curseur qui passe les enregistrements un à un, même chose.

    Je voulais essayer en faisant un delete where todelete = 1, mais avant je doit updater, et un update avec un in n'accouche pas également...

    En fait, je cherche surtout à faire une suppression de 7000 lignes dans dans la table qui en contient 2.5 millions...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Bonsoir,

    Voici une requête qui devrait vous satisfaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE rh INNER JOIN MonSchema.MaTable1 t1 ON condition_à_trouver
              INNER JOIN MonSchema.MaTable2 t2 ON t1.ID_REF = t2.ID_REF
    SET rh.colToDelete = 1;
    Je n'ai pas compris ce qu'est votre delete chere todelete = 1, mais je pense qu'à votre place, pour résoudre le problème rapidement, je ferais effectivement le UPDATE, puis je lancerais le DELETE à un moment choisi (la nuit peut-être), et éventuellement en plusieurs fois à l'aide de la clause WHERE rh.colToDelete = 1 AND ... ... = une condition qui modifie une partie des lignes, les autres étant modifiées ultérieurement.

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Et en utilisant la requête prévue à cet effet proposée dans la FAQ : http://mysql.developpez.com/faq/?pag...ne-autre-table ?
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

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

Discussions similaires

  1. Requête update avec jointure
    Par wolfdream dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/03/2011, 10h19
  2. Réponses: 3
    Dernier message: 25/05/2009, 17h11
  3. Requête Update avec jointure
    Par maph1 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2008, 00h10
  4. Requête UPDATE avec jointure
    Par petburn dans le forum SQL
    Réponses: 7
    Dernier message: 30/07/2007, 14h22
  5. Requete update avec jointure d'une requête
    Par bart64 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 28/05/2007, 20h31

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