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

Langage SQL Discussion :

Chevauchement de période


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Résolu] Chevauchement de période
    Bonjour,

    je suis avec Oracle, et j'ai un petit soucis.
    J'ai un table avec divers champs et un champs DatDeb et DatFin.

    J'ai besoin d'un requete me donnant la liste des enregistrements ayant deux champs (Id1 et Id2) identiques et un chevauchement de période.

    DatDeb est la date de début de période et est toujours renseigné.
    DatFin est la date de fin de la période et peu etre null (pas de fin, donc période infinie).

    J'ai commencé un debut de requete avec plein de cas, mais je pense (espère) ne pas etre sur la bonne piste.

    Quelqu'un a t il une idée ?


    Merci d'avance

    Grunge

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ...
    FROM laTable a, laTable b
    WHERE a.Id = b.Id
      AND a.DateDeb BETWEEN b.DateDeb AND nvl(b.DateFin, to_date ('31/12/3999', 'DD/MM/YYYY'))
      AND a.rowid ! b.RowId
    En supposant que le 31/12/3999 = infini

    Si tu es en version >=8i tu peux utiliser la syntaxe de jointure avec INNER JOIN
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    J.
    J. est déconnecté
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Tu as 6 cas pour deux enregistrements avec la même clé:

    1)
    |----|
    |----|

    2)
    |-----|
    |--|

    3)
    |-----|
    |-----|

    4)
    |-----|
    |---------|

    les deux derniers cas ne se chevauchent pas et sont plus simples à détecter (car deux cas seulement)

    5)
    |-----|
    |---|

    6)
    |-----|
    |------|

    Pour tester les deux cas:
    d1, d2 pour les dates de début
    f1, f2 pour les dares de fin

    si d1>=f2 ou si f1<=d2 alors c'est ok (en supposant que tu aies d1<=f1 et d2<=f2)

    En espérant que ça va t'aider (il n'y a que deux cas à tester)

  4. #4
    J.
    J. est déconnecté
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Tu as 6 cas pour deux enregistrements avec la même clé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    1)
         |----|
      |----|
     
    2)
         |-----|
           |--|
     
    3)
         |-----|
             |-----|
     
    4)
         |-----|
       |---------|
     
    les deux derniers cas ne se chevauchent pas et sont plus simples à détecter (car deux cas seulement)
     
    5)
            |-----|
     |---|
     
    6)
         |-----|
                   |------|

    Pour tester les deux cas:
    d1, d2 pour les dates de début
    f1, f2 pour les dares de fin

    si d1>=f2 ou si f1<=d2 alors c'est ok (en supposant que tu aies d1<=f1 et d2<=f2)

    En espérant que ça va t'aider (il n'y a que deux cas à tester)

  5. #5
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup a vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Durée d'un chevauchement de périodes
    Par julie4207 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/02/2009, 14h23
  2. Réponses: 8
    Dernier message: 02/02/2009, 21h50
  3. Chevauchement maximum de périodes
    Par Pothot dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/10/2007, 15h16
  4. [CR] Filtrer pour une période donnée
    Par liberio dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 21/04/2004, 16h32
  5. Calculer la période d'une horloge
    Par barthelv dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 08/03/2004, 16h39

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