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

MySQL Discussion :

Modifier un champ d'une table d'après le champ d'une autre table [MySQL-5.0]


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Modifier un champ d'une table d'après le champ d'une autre table
    Bonjour,

    J'ai un souci urgent. Je dois modifier un champ d'une table principale (Membres) en fonction d'un champ d'une table transactionnelle (Commandes) lui étant liée (par le champ No_membre). Évidemment, la table transactionnelle contient plus d'une entrée pour un même Membre. Je veux pouvoir prendre la date de la dernière transaction pour un No_Membre dans la table commandes, ajouter le contenu du champ Adhesion à l'année du champ et modifier le contenu du champ Date_échéance de la table Membres.

    Comme une image vaut mille mot, voici la situation voulue :

    Nom : Tables membres et commandes.png
Affichages : 183
Taille : 12,8 Ko

    Merci de m'aider rapidement, je dois avoir trouvé la solution pour vendreid matin... :

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Quelle est la dernière date de chaque membre dans la table Commandes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT No_membre, MAX(Date_transaction) AS dern_date
    FROM Commandes
    GROUP BY No_membres
    Mise à jour de la date dans la table des membres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE Membres m
    INNER JOIN
    (
    	SELECT No_membre, MAX(Date_transaction) AS dern_date
    	FROM Commandes
    	GROUP BY No_membre
    ) tmp ON tmp.No_membre = m.No_membre
    SET m.Date_echeance = tmp.dern_date

  3. #3
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Vous êtes génial !
    Merci, ça fonctionne nickel ! J'avais trouvé une partie de la solution (max et group by). Par contre je suis bien contente que vous m'ayez aiguillée sur la partie mise-à-jour¸.

    Une dernière petite chose : votre solution n'inclue pas l'addition de la colonne Adhesion à l'année de la date à mettre à jour dans la table Membres. Si vous avez d'autres idées géniales, n'hésitez pas !


    Merci encore !

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Une dernière petite chose : votre solution n'inclue pas l'addition de la colonne Adhesion à l'année de la date à mettre à jour dans la table Membres. Si vous avez d'autres idées géniales, n'hésitez pas !
    À 1h du mat', je n'avais pas vu cette partie de la demande !

    Il faut donc faire une jointure supplémentaire pour récupérer le nombre d'années à ajouter à la date d'échéance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    UPDATE Membres m
    INNER JOIN
    (
    	SELECT No_membre, MAX(Date_transaction) AS dern_date
    	FROM Commandes
    	GROUP BY No_membre
    ) tmp ON tmp.No_membre = m.No_membre
    	INNER JOIN Commandes c
    		ON c.No_membre = tmp.No_membre
    		AND c.Date_transaction = tmp.dern_date
    SET m.Date_echeance = DATE_ADD(tmp.dern_date, c.Adhesion YEAR)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut La deuxième partie ne fonctionne malheureusement pas.
    Merci de travailler si fort pour moi, mais la deuxième partie (pour mettre à jour l'année) ne fonctionne pas. Si jamais vous avez une autre petite idée...

    Je suis déjà très reconnaissante de ce que vous faites pour moi !!!

  6. #6
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Eurêka !!!
    Bonjour,

    Il n'y a plus de soucis ! J'ai trouvé l'erreur : elle se situait dans le libellé de la fonction qui devait se lire comme suit :

    SET m.Date_Echeance = ADDDATE(tmp.dern_date, INTERVAL c.Adhesion YEAR)


    Bravo ! Merci pour tout !

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

Discussions similaires

  1. Comment calculer une valeur d'après plusieurs champs
    Par mokrane20yy dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/02/2014, 08h36
  2. Réponses: 5
    Dernier message: 24/01/2011, 22h17
  3. Réponses: 5
    Dernier message: 15/12/2008, 14h21
  4. Réponses: 5
    Dernier message: 06/03/2008, 07h28
  5. Réponses: 4
    Dernier message: 09/08/2006, 10h41

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