Bonjour, je viens de m'inscrire car j'ai une très grosse requête à faire pour un stage et j'ai du mal à m'en sortir.
Je travail sur Access avec deux tables:
TableA
-TRACKING_ID (clef primaire normalement inutile ici)
-CORRELATION_ID (int)
-STEP (text)
-DATE (date/heure)
TableB
-CORRELATION_ID (int)
-STEP (text)
-DATE (date/heure)
Je traite ici des flux, un flux est composé de 3 STEPs: 'Entrant', 'Traitement', 'Sortant' (dans cet ordre), un flux est démarqué par un correlation_id (la table est donc techniquement composé de "paquet" de 3 fois le même correlation_id).
Un flux est "en erreur" si le STEP 'Sortant' s'est mal passé (c'est une colonne de la table "Status", mais il est inutile de la mentionner)
La TableA comprend absolument TOUT, toutes les données dont j'ai besoin.
La TableB comprend uniquement les données des STEPs 'Sortant' des données "en erreur".
Je vous montre vite-fait:
TableA
TRACKING_ID|CORRELATION_ID|STEP|DATE
------------------------------------------
0001............|A....................|Entr..|10/10/10
0002............|A....................|Trai..|11/10/10
0003............|A....................|Sort..|12/10/10
0004............|B....................|Entr..|13/10/10
0005............|B....................|Trai..|14/10/10
0006............|B....................|Sort..|15/10/10
0007............|B....................|Entr..|16/10/10
0008............|B....................|Trai..|17/10/10
0009............|B....................|Sort..|18/10/10
etc...
TableB (qui est déjà le résultat d'un requette sur la TableA)
CORRELATION_ID|STEP|DATE
--------------------------------
B....................|Sort..|18/10/10
F....................|Sort..|22/04/10
P....................|Sort..|29/06/11
Vous l'avez constaté, un flux (ici B) peut être relancé donc réintégré dans la TableA, à une autre date.
Et la requette que je souhaite executer:
Selectionner les STEP 'Trai' correspondant aux STEP 'Sort' de la TableB.
(Simple sur le papier, mais j'ai l'impression, très complexe en SQL).
Ce que resort la requette sera donc composé de 3 lignes, les STEP 'Trai' sortis seront ceux qui correspondent directement aux STEP 'Sort' de la TableB(càd: les STEP 'Trai' dont la date est la plus grande des dates inférieures au STEP 'Sort' correspondant).
Dans mon exemple de tables simplifié, une des lignes retournées sera
TRACKING_ID|CORRELATION_ID|STEP|DATE
------------------------------------------
0007............|B....................|Trai..|16/10/10
....
....
C'est extrémement complexe à comprendre et aussi à expliquer (et encore, J'ai très, très largement simplifié). S'il vous manque des élements logiques vous pouvez le dire, j'ai peut être oublié certaines choses en simplifiant.
Partager