Bonjour,

J'ai un souci pour trouver une bonne syntaxe SQL.
Je dois corriger une table qui a cette structure (très simplifié)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
PR DEB FIN
1 2005 2006
1 2006 2008
1 2008 2009
2 1998 2002
2 2002 2005
2 2005 2009
3 1998 2005
3 2000 2002
3 2001 2008
Le problème est que je veux faire un UPDATE de cette table pour corriger la date de fin du produit n°3 qui a les dates qui se chevauchent.
Je veux obtenir ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
PR DEB FIN
3 1998 2000
3 2000 2001
3 2001 2008
A priori c'est facile il suffit de faire un UPDATE avec un t1 INNER JOIN t2 sur la même table avec la date de fin t1 = date debut t2.
Le pb est que pour la première ligne j'aurais 2 possibilités et donc la BDD va d'abord mette la date de fin à 2000 puis le mettra à 2001. Il faudra alors reexecuter la même requête pour remettre la date de fin à 2001.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
premier passage:
PR DEB FIN
3 1998 2001
3 2000 2001
3 2001 2008
 
deuxième passage:
PR DEB FIN
3 1998 2000
3 2000 2001
3 2001 2008

Alors, comment trouver la bonne date de début en une seule requête?