Bonjour,
Actuellement je fais un traitement en Java après avoir fait une requête assez simple mais je me demande si ce traitement Java pourrait être remplacé par une requête plus complexe. Il me semble que ça serait plus rapide. Cependant je ne sais pas si une telle requête est faisable et c'est pourquoi je sollicite votre aide.
Donc pour résumer voici la structure de mes 2 tables concernées :
Actuellement je récupère tous les enregistrements de ma TABLE1 "GAUCHE" qui n'ont pas d'enregistrement correspondant dans la TABLE2 "DROITE".TABLE1 "GAUCHE"
ID : NUMBER
IDVOITURE : NUMBER
DATESAISIE : DATE
DATEDEBUT : DATE
DATEFIN : DATE
PUISSANCE : NUMBER
TYPESAISIE : NUMBER
TABLE2 "DROITE"
ID : NUMBER (a la même valeur que l'ID de la TABLE1 "GAUCHE")
FK sur l'ID de la TABLE1
J'ai donc une requête très simple de ce type :
Cela me retourne une liste de valeur du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT T.* FROM TABLE1 T LEFT OUTER JOIN TABLE2 r ON T.id=R.id WHERE R.id IS NULL order by T.IDVOITURE asc, T.DATESAISIE desc, T.DATEDEBUT desc;
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 ID | IDVOITURE | DATESAISIE | DATEDEBUT | DATEFIN | PUISSANCE | TYPESAISIE 1 | 20 | 21/05/2013 10:12:05 | 21/05/2013 10:40 | 21/05/2013 10:45 | 540 |2 2 | 20 | 21/05/2013 10:12:05 | 21/05/2013 10:35 | 21/05/2013 10:40 | 530 |2 3 | 20 | 21/05/2013 10:12:05 | 21/05/2013 10:30 | 21/05/2013 10:35 | 520 |2 4 | 20 | 21/05/2013 10:12:05 |21/05/2013 10:25 | 21/05/2013 10:30 | 510 |2 5 | 20 | 21/05/2013 09:00:05 | 21/05/2013 12:00 | 21/05/2013 15:00 | 200 |3 6 | 20 | 21/05/2013 08:56:05 | 21/05/2013 21:45 | 21/05/2013 23:55 | 263 |4 7 | 21 | 21/05/2013 21:00:05 | 21/05/2013 21:25 | 21/05/2013 21:30 | 152 |6 8 | 21 | 21/05/2013 21:00:05 | 21/05/2013 21:20 | 21/05/2013 21:25 | 150 |6 9 | 21 | 21/05/2013 21:00:05 | 21/05/2013 21:15 | 21/05/2013 21:20 | 149 |6 10 | 22 | 21/05/2013 19:36:15 | 21/05/2013 20:00 | 21/05/2013 22:00 | 800 |4
Le traitement Java récupère cette liste et fait les traitements suivants :
Pour chaque IDVOITURE identique ayant un TYPESAISIE similaire on récupère la date de fin la plus haute, on prend la puissance de cette ligne et ensuite on cherche la date de début la plus basse.
Pour l'exemple donné au dessus on obtient donc le résultat Java suivant :
J'aimerais donc d'abord avoir votre avis quand à la faisabilité de la chose et si c'est le cas je veux bien un petit coup de main pour l'écrire car pour l'instant je patauge pas mal. Sachant aussi que je dois l'écrire en HQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ID | IDVOITURE | DATESAISIE | DATEDEBUT | DATEFIN | PUISSANCE | TYPESAISIE 4 | 20 | 21/05/2013 10:12:05 | 21/05/2013 10:25 | 21/05/2013 10:45 | 540 |2 5 | 20 | 21/05/2013 09:00:05 | 21/05/2013 12:00 | 21/05/2013 15:00 | 200 |3 6 | 20 | 21/05/2013 08:56:05 | 21/05/2013 21:45 | 21/05/2013 23:55 | 263 |4 9 | 21 | 21/05/2013 21:00:05 | 21/05/2013 21:15 | 21/05/2013 21:30 | 152 |6 10 | 22 | 21/05/2013 19:36:15 | 21/05/2013 20:00 | 21/05/2013 22:00 | 800 |4
Si ce n'est pas clair n'hésitez pas à me le dire et merci beaucoup à ceux qui m'aideront
Partager