IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Question conception : Soustraire dates des lignes précédentes


Sujet :

SQL Firebird

  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut Question conception : Soustraire dates des lignes précédentes
    Bonjour,
    Je vais avoir une table qui va gérer des statuts avec des dates pour des commandes.
    Je peux avoir plusieurs lignes pour une même commande par exemple cette chronologie :
    - Prise en main
    - En Pause
    - Prise en main
    - Expediée

    Je souhaite pouvoir calculer le nombre de jour entre chacun des statuts d'une même commande.
    J'avais pensé à ajouter une colonne "NombreJours" puis, gérer ça avec un trigger qui se chargerait lors de l'insert d'une nouvelle ligne, de calculer automatiquement le nombre de jour entre la date de la ligne insérée et la date de la dernière ligne, et d'ajouter ce nombre de jours au moment de l'insert. Il n'y aura pas d'update sur cette table, uniquement des inserts.

    Qu'en pensez vous ?
    Ca me semble plus simple de faire comme ça. Car il existe une autre méthode avec une procédure qui parcourrerait chaque ligne en regardant si l'ID de la commande et le même que la ligne précédente, et en faisant la soustraction...

    Merci de votre aide,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    La méthode classique pour identifier la date de l'évènement précédent pour un même id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select  tb1.id
        ,   tb1.date    as  date_courante
        ,   max(tb2.date)   as  date_precedente
    from    matable tb1
        left join
            matable tb2
            on  tb1.id   = tb2.id
            and tb1.date > t2.date
    group by tb1.id
        ,   tb1.date
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    s'il s'agit d'un choix entre l'utilisation d'un trigger ou d'une procédure je vote sans hésitation pour le trigger.
    Cela étant la pertinence de la colonne "Nombre de Jours" qui est une colonne calculée reste à débattre. Comme l'indique Al1_24 le SQL est relativement simple
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Compter lignes en fonction des lignes précédentes
    Par lozeba dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/02/2016, 12h25
  2. calcul variable sur la base des lignes précédentes
    Par soufiane_84 dans le forum SAS Base
    Réponses: 4
    Dernier message: 17/12/2015, 17h45
  3. Recopier valeur des lignes précédentes
    Par lozeba dans le forum Débutez
    Réponses: 2
    Dernier message: 17/05/2013, 15h24
  4. [Dates] Question pour opérations sur des heures
    Par Sangdrax1604 dans le forum Langage
    Réponses: 7
    Dernier message: 23/08/2006, 11h07
  5. [Conception] Requête sur des dates pour stats
    Par vallica dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/05/2006, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo