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 :

mettre à jour une ligne avec une autre ligne de la même table


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut mettre à jour une ligne avec une autre ligne de la même table
    Bonjour à tou,

    Je sèche depuis un petit moment sur une requête qui pourrait me permettre de mettre à jour une ligne de ma table avec des éléments d'une autre ligne de cette même table.

    Explications :
    voici ma_table :

    commune | date_intervention | prosp | ttt | contr
    communeA | 03/04/2014 | 1 | |
    communeA | 03/04/2014 | | 1 |
    communeB | 03/04/2014 | 1 | |
    communeB | 03/04/2014 | | 1 |
    communeB | 03/04/2014 | | | 1

    le but est de réussir à avoir :

    commune | date_intervention | prosp | ttt | contr
    communeA | 03/04/2014 | 1 | 1 |
    communeB | 03/04/2014 | 1 | 1 | 1

    Déjà, est-ce possible ?

    Une idée ?

    Merci beaucoup pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 279
    Points : 11 736
    Points
    11 736
    Par défaut
    Tu peux expliquer la logique de ce que tu cherches à faire ? Tu parles de mettre à jour une ligne, mais ce que je vois c'est que tu remplaces cinq lignes par deux lignes...
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Désolée, je reviens un peu tardivement sur ce post.
    Le but était de rassembler tous les résultats de la commune A sur une ligne et tous les résultats de la commune B sur une ligne. A noter qu'il s'agit d'un système booléen où simplement lorsqu'il y a "1" c'est que l'activité a eu lieu.
    Je n'ai pas trouvé de solution rapide. Mais plutôt un système D : j'ai fait un Sum pour chacun de mes champs (c'est à dire chacune de mes activités : prosp, ttt, contr) et j'ai créé une table avec le résultat. J'ai ensuite fait un update sur cette table où je mettais "1" là où il y avait un résultat >1. De cette façon, je gardais le système booléen. En fait, ce qui m'intéressait c'était de savoir si l'activité avait eu lieu (au moins une fois) et non le nombre de fois où elle avait eu lieu.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 129
    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 129
    Points : 38 521
    Points
    38 521
    Billets dans le blog
    9
    Par défaut
    Essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select commune
          ,max(date_intervention) 
          ,max(prosp)
          ,max(ttt)
          ,max(contr)
    from matable
    group by commune

  5. #5
    Membre à l'essai
    Femme Profil pro
    chargée de mission SIG
    Inscrit en
    Juillet 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chargée de mission SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Merci escartefigue, ça marche.

    Du coup, j'ai même poussé le vice pour avoir une somme des temps de chaque activité, et ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select nom_commune
          ,max(date_intervention) 
          ,SEC_TO_TIME(SUM(TIME_TO_SEC(tps_prospection)))
          ,SEC_TO_TIME(SUM(TIME_TO_SEC(tps_traitement)))
          ,SEC_TO_TIME(SUM(TIME_TO_SEC(tps_controle)))
    from matable
    group by nom_commune, date_intervention
    Si ça peut aider quelqu'un

    A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 2
    Dernier message: 21/02/2014, 13h33
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Mettre à jour un champ avec une Liste déroulante
    Par Narutosaad dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/08/2010, 12h18
  5. Réponses: 4
    Dernier message: 15/10/2009, 13h33

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