Bonjour à tous et à toutes,
Je fais face à un problème de chainage de données en sql, et je n'arrive pas à comprendre comment lier mes données.
CONTEXTE
Voici un descriptif simplifié et très rapide d'une partie d'un système d'informations:
- AGENT (REF_AGENT, NOM, PRENOM, ...)
- TRANSPORT (REF_TRSP, DATE_TRSP, ..., #REF_AGENT, #REF_SRV_DEP, #REF_SRV_ARR)
- SERVICE (REF_SRV, Etage_SRV, ...)
Pour faire simple, un agent peut faire plusieurs transports, d'un service à un autre.
De même, un service peut être le point de départ ou d'arrivée de plusieurs transports.
Rien de très compliqué dans ce schéma.
Et pour faire des stats, idem. Le fait de compter ne pose aucun problème, du moins pour ce qui est apparent.
Le problème apparait dès lors que j'essaye de compter une information implicite (et donc non référencée dans la base), à la demande d'un client.
PROBLEME
En gros, un agent a un transport à faire (Transport 1) d'un Service (A) vers un Service (B).
Puis, il doit faire un deuxième transport (Transport 2) d'un Service (C) vers un Service (D).
Dans cet exemple, il y a un troisième transport, le transport intermédiaire (de B vers C) qui correspond juste à la transition d'une affectation à une autre.
C'est ce troisième transport que je souhaite compter. Et là, je bloque.
Ce troisième transport n'est jamais renseigné dans la base, je dois chainer les transports 1 et 2 alors qu'il n'y a pas de lien entre eux.
Ces transports 1 et 2 doivent également être consécutifs (entre une embauche et une débauche par exemple), mais les dates ne sont pas égales.
Et pour le challenge, pour que ce transport intermédiaire soit compté, il faut que l'étage du Service B soit différent du Service C.
EDIT
Si ça peut aider, je mets en pièce-jointe une capture d'écran d'un exemple des transports en question.
Le listing fait état de 14 transports réels.
En les comptant de visu, il y a 13 transports implicites.
FIN EDIT
Je suis sur un Oracle 10gR2, sur Windows. Ceci étant, ma question relève de SQL pur et dur, ça ne relève pas d'un SGBDR (je ne saurais pas le faire non plus sur MS SQL, Sybase, ou MySQL).
Si quelqu'un peut m'aider à y voir plus clair, j'apprécierais beaucoup le coup de main.
Merci d'avance à tous et à toutes,
Cordialement,
Délio
Partager