Bonjour,
je ne sais pas si c'est possible et je me casses la tête dessus depuis quelques heures, donc bon.
J'ai en fait une table que je souhaites mettre à jour par rapport aux données qu'elle contient elle même, je m'explique :
Une table `detail` : contenant les champs :
- cle1
- cle2
- lig
- val
Et un exemple de contenu :
J'aimerais donc updater la colonne cle1 et cle2 identique en utilisant la valeur de lig = 2 pour mettre à jour val pour lig = 1 (en faisant +1) par exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 cle1 cle2 lig val ------ ------- -------- -------- 1 1 1 NULL 1 1 2 10 1 2 1 NULL 1 2 2 20
Mon update :
Seulement ce genre de choses n'est bien sûr pas toléré
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 update detail set val = d.val + 1 from detail d where detail.cle1 = d.cle1 and detail.cle2 = d.cle2 and detail.lig = 1 -- la ligne qu'on veut mettre à jour and d.lig = 2 -- notre ligne de référence
Le résultat final attendu étant :
Auriez-vous une idée de comment m'y prendre?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 cle1 cle2 lig val ------ ------- -------- -------- 1 1 1 11 1 1 2 10 1 2 1 21 1 2 2 20
Partager