Bonjour tout le monde,

Je veux mettre à jour ma table_1 et voici le scénario :

Je travaille période par période (de la plus récente à la plus vieille) pour ceux qui ont au moins une catégorie (cat) vide.
Je prend la cat renseignée la plus récente sur la période.
Sinon sur celles d'avant
Sinon sur celles d'après.
Je propage sur le futur de la période
Si vide (ne devrait pas arriver).
Je remonte en arrière sur la période.
Si vide on met à jour.
Si j'ai une valeur différente, c'est celle-là que je propagera au retour en arrière.
Une fois que la période est terminée, je passe à la période précédente.



Les cat a mettre a jour (avec cette requête je cherche mes t1.id qui ont au moins 1 cat not null) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT t1.date_a, t1.date_fin, t1.cat, t1.id 
FROM table_1 t1 
WHERE t1.cat is null 
    and exists (SELECT 'x' FROM table_1 t2 WHERE t2.id = t1.id AND t2.cat is not null)
Résultat :

date_a date_fin cat id
15/10/2011 1020930
05/01/2015 1013145
... ... ... ...


Je prend par exemple le t1.id = 1020930

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
----*** 02 	les périodes, de la plus récente à la plus vieille
SELECT t2.periode, t1.date_a, t1.date_fin, t1.cat, t1.id 
FROM table_1 t1 
   INNER JOIN table_2 t2 ON t2.id = t1.idt1
WHERE t1.id = 1020930
ORDER BY t2.date_debut desc, t1.date_a desc
Résultat :

periode date_a date_fin cat id
2012A 19/09/2013 6891 1020930
2012A 12/07/2012 18/09/2013 1020930
2011A 14/07/2011 1020930
2011A 03/03/2011 13/07/2011 1020930
2010A 21/07/2011 6891 1020930
2010A 01/01/2009 20/07/2011 1020930


Merci d'avance