Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/08/2011, 15h24   #1
Candidat au titre de Membre du Club
 
Homme Mohamed Chaala
Consultant ERP
Inscription : décembre 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Chaala
Localisation : Algérie

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2008
Messages : 46
Points : 13
Points : 13
Par défaut update champs avec les champs de la meme colonne ?

Bonjour
soit la table suivante : emolument

employe exercice salaire

frank 2010 210000
frank 2009 810000
frank 2008 750000
john 2010 210000
john 2008 410000
fred 2010 270000
fred 2007 290000

on veut mettre a jour la colonne salaire pour les exercices d'avant 2010(2009,2008 etc..) pour chaque employé avec son salaire de 2010
quelle est la requete SQL à appliquer??
merci
enstein8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 16h48   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Code :
1
2
3
4
5
6
7
8
 
UPDATE E_AVANT_2010
SET E_AVANT_2010.salaire=E_2010.SALAIRE
FROM emolument E_AVANT_2010
   INNER JOIN emolument E_2010
      ON E_2010.employe=E_AVANT_2010.employe 
         AND E_2010.exercice=2010
WHERE E_AVANT_2010.exercice<2010
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 17h35   #3
Candidat au titre de Membre du Club
 
Homme Mohamed Chaala
Consultant ERP
Inscription : décembre 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Chaala
Localisation : Algérie

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2008
Messages : 46
Points : 13
Points : 13
merci de me fournir des explications sur cette solution...sur sql server
la table : emolument
les colonnes : employe exercice et salaire


exemple

frank 2010 1000
frank 2009 5000

et on veut aboutir à:


frank 2010 1000
frank 2009 1000
enstein8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2011, 07h53   #4
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
merci de me fournir des explications sur cette solution...sur sql server
C'est exactement ce que j'ai fait

La syntaxe est un peu avancée certes mais elle equivaut à cette autre requète que vous comprendrez plus aisement:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
UPDATE emolument
SET salaire=(SELECT salaire
                  FROM emolument A
                  WHERE A.exercice=2010
                     AND A.employe=emolument.employe)
WHERE exercice<2010
   AND EXISTS(SELECT *
                  FROM emolument A
                  WHERE A.exercice=2010
                     AND A.employe=emolument.employe)
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2011, 12h48   #5
Candidat au titre de Membre du Club
 
Homme Mohamed Chaala
Consultant ERP
Inscription : décembre 2008
Messages : 46
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Chaala
Localisation : Algérie

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2008
Messages : 46
Points : 13
Points : 13
merci pour votre aide iberserk
enstein8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2011, 21h01   #6
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
De rien... bonne mise à jour a vous...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h36.


 
 
 
 
Partenaires

Hébergement Web