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

Langage SQL Discussion :

Update sur une table avec conditions


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut Update sur une table avec conditions
    Bonjour,

    J'ai un petit souci :
    J'ai une table qui contient des trous comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	2007-2008	2008-2009	2009-2010	2010-2011
    client1	1			
    client1		             3		
    client1			                          -1	
    client1				                                        -2
    client2	2			
    client2		             4		
    client2			                           2	
    client2				                                        4
    client3	1			
    client3		             4		
    client3			                          -2	
    client3				                                        3
    client4	-3			
    client4		             -2		
    client4			                          3	
    client4				                                         2
    Et j'aimerais combler ces trous à travers une requête SQL de telle sorte à répliquer, pour un client donné et une année donné, les mêmes informations, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	2007-2008	2008-2009	2009-2010	2010-2011
    client1	1	            3	             -1	             -2
    client1	1	            3	             -1	             -2
    client1	1	            3	             -1	             -2
    client1	1	            3	             -1	             -2
    client2	2	            4	             2	             4
    client2	2	            4	             2	             4
    client2	2	            4	             2	             4
    client2	2	            4	             2	             4
    client3	1	            4	             -2	             3
    client3	1	            4	             -2	             3
    client3	1	            4	             -2	             3
    client3	1	            4	             -2	             3
    client4	-3	            -2	             3	             2
    client4	-3	            -2	             3	             2
    client4	-3	            -2	             3	             2
    client4	-3	            -2	              3	             2
    Merci d'avance de votre aide

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    vous n'avez pas précisé la structure de la table, on supposera donc
    T(client, an1, an2, an3, an4)

    Vous pouvez faire ainsi :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT 
        client,
        MAX(an1) AS an1,
        MAX(an2) AS an2,
        MAX(an3) AS an3,
        MAX(an4) AS an4
    FROM T
    GROUP BY client

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    combler les trous dans la table via des update donc ?
    ou plutôt faire une requête se type select qui affiche le résultat donné ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Merci de vos réponses. Ce serai effectivement pour effectuer un update. Je ne sais pas trop comment procéder.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Quel est le SGBD utilisé ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    Je fais des proc SQL sous SAS. Je charge un fichier .txt.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je ne sais pas si SAS l'acceptera mais tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    UPDATE T
    INNER JOIN
    (
        SELECT 
            client,
            MAX(an1) AS an1,
            MAX(an2) AS an2,
            MAX(an3) AS an3,
            MAX(an4) AS an4
        FROM T
        GROUP BY client
    ) tmp ON tmp.client = T.client
    SET T.an1 = tmp.an1,
        T.an2 = tmp.an2,
        T.an3 = tmp.an3,
        T.an4 = tmp.an4
    Sauvegarde les données quand même avant, on ne sait jamais !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    Merci beaucoup pour la réponse ! Je vais tester

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    Cela fonctionne, merci

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

Discussions similaires

  1. Export d'une table avec condition sur une autre
    Par Hobbi1 dans le forum Import/Export
    Réponses: 2
    Dernier message: 25/03/2010, 14h35
  2. MAJ d'un champ d'une table avec condition sur clef primaire commune
    Par ar|equin dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/05/2007, 13h57
  3. [HQL] Update HQL sur une table avec Id composite
    Par Eccoon dans le forum Hibernate
    Réponses: 5
    Dernier message: 02/04/2007, 12h10
  4. Réponses: 12
    Dernier message: 12/06/2006, 14h29
  5. UPDATE d'une table avec test d'un champ d'une autre table
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2004, 12h30

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