Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 25/08/2011, 11h22   #1
Nouveau Membre du Club
 
Avatar de rgomes
 
Homme
IT Developer JAVA Senior
Inscription : juin 2004
Messages : 118
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : IT Developer JAVA Senior
Secteur : Service public

Informations forums :
Inscription : juin 2004
Messages : 118
Points : 39
Points : 39
Par défaut Incrémenter une colonne avec un seul UPDATE

Bonjour,

J'ai une table avec une colonne TRI de type SMALLINT.
Actuellement, la valeur de tous les champs qui existent est 1.
CODE TRI
NEW 1
DEL 1
PEND 1

J'aimerai les incrémenter de 1 l'un par rapport à l'autre (1,2,3,.....).
CODE TRI
NEW 1
DEL 2
PEND 3

J'ai essayé :
Code :
1
2
3
4
5
6
7
8
9
10
 
UPDATE TABLE C
SET tri=(SELECT max(tri)+1 FROM TABLE C WHERE C.CODE_TYPE = 'xxxx')
WHERE EXISTS(
  SELECT 1  FROM TABLE C1 WHERE C1.CODE_TYPE = 'xxxx'
  AND C.CODE_CLE=C1.CODE_CLE
)
AND 
C.CODE_TYPE = 'xxxx'
;
Mais tous les champs sont incrémentés de 1 et non l'un par rapport à l'autre (tous valent 2).

Merci pour tout aide !
rgomes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 11h37   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
bonjour,

Je passerai par une vue pour faire ceci.

ne connaissant pas les colonnes de votre table à updater voici un exemple de vue qui générera un tri par catégorie ... à vous de reboucler :
Code sql :
1
2
3
4
5
6
7
8
 
CREATE VIEW test_tri AS 
WITH tmp AS (
SELECT code, 
row_number() over(partition BY CODE_TYPE ORDER BY code) AS nv_tri
FROM C)
 
SELECT * FROM tmp

Bon ici jouez avec le partition by, l'order by pour arriver au résultat voulu et ensuite :
Code sql :
1
2
3
 
UPDATE C SET tri = (SELECT nv_tri FROM test_tri WHERE ...)
....


edit : sinon toujours avec une vue vous pouvez aussi faire une requête récursive afin de générer correctement votre tri, un exemple ici adaptable facilement sous db2 : http://sqlpro.developpez.com/cours/s...te-recursives/
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 14h15   #3
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
je pense qu'il faut que tu passe par un programme telle UPDATE
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 18h54   #4
Nouveau Membre du Club
 
Avatar de rgomes
 
Homme
IT Developer JAVA Senior
Inscription : juin 2004
Messages : 118
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : IT Developer JAVA Senior
Secteur : Service public

Informations forums :
Inscription : juin 2004
Messages : 118
Points : 39
Points : 39
Merci punkoff, ca me convient !
rgomes 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 08h38.


 
 
 
 
Partenaires

Hébergement Web