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 :

Update de dates entre deux tables [MariaDB]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut Update de dates entre deux tables
    Bonjour,

    J´ai 2 tables :
    1. Lot_Client
    2. Production


    Dans la table Lot_client j´ai la colonne "Date_prepa" et "numero_lot".
    Dans la table Production j´ai la colonne "Lot_client" et "Date_envoi".
    Dans "Lot_client.numero_lot" et "Production.Lot_client" on a le meme numero.

    Comment update toute la colonne "Production.Date_envoi" avec la date de "Lot_client.Date_prepa" en se basant sur "Lot_client.numero_lot" = "Production.Lot_client".
    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 644
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Qu'avez-vous déjà essayé comme requête ? Quel en est le résultat ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut
    Bonjour,
    J´ai envie de tester ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE Production.Date_envoi
    SET    
    Lot_client.Date_envoi = Production.Lot_client
    WHERE  
    Lot_client.numero_lot = Production.Lot_client
    Mais j´ai un doute de flinguer la base de donnée.
    Updater la colonne Date_envoi dans Production, ou Lot_client.numero_lot = Production.Lot_client.
    D´ou m´a demande avant de faire clique

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 644
    Billets dans le blog
    10
    Par défaut
    Il faut faire une jointure pour vérifier l'égalité du numéro de lot :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update Production  PR
    inner join Lot_Client LC
       on LC.numero_lot=PR.Lot_client
    set PR.Date_envoi=LC.Date_prepa
    ;

    Cette requête modifie potentiellement toutes les lignes de la table "Production", il faut éventuellement ajouter une restriction WHERE pour n'impacter que certaines lignes.

    Note : c'est ballot d'avoir choisi un nom de colonne (Lot_client) dans une table qui correspond au nom d'une autre table...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut
    Merci @escartefigue.
    Mais en lançant la requête pour tester, j´ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > 1205 - Lock wait timeout exceeded; try restarting transaction
    > Time: 50,241s
    comment puis-je y remedier ?

    Peux t´on le faire por lots de lignes ?
    Car j´ai aux alentours de 120000 lignes

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 644
    Billets dans le blog
    10
    Par défaut
    C'est plutôt lent comme exécution pour seulement 120 000 lignes.
    Est-ce que les colonnes de jointure sont bien de même type et de même longueur ?

    Si c'est le cas, on peut commencer par réorganiser les tables (OPTIMIZE TABLE), puis, si toujours KO, procéder par plages de lots en ajoutant une restriction WHERE

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

Discussions similaires

  1. Liste de sélection sur date entre deux tables
    Par Gazole22 dans le forum QlikView
    Réponses: 3
    Dernier message: 16/07/2013, 12h38
  2. Probleme d'update entre deux tables
    Par faudet78 dans le forum Requêtes
    Réponses: 0
    Dernier message: 22/03/2010, 15h41
  3. requête update entre deux tables
    Par evevev dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/03/2010, 19h21
  4. Réponses: 4
    Dernier message: 09/11/2007, 18h08
  5. Syntaxe Update entre deux tables
    Par lenoil dans le forum SQL
    Réponses: 5
    Dernier message: 02/10/2007, 16h12

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