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) :
Résultat :
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)
date_a date_fin cat id 15/10/2011 1020930 05/01/2015 1013145 ... ... ... ...
Je prend par exemple le t1.id = 1020930
Résultat :
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
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
Partager