Bonjour, alors je résume, c'est pour du suivi de conso de véhicules qui sont soit loués, soit achetés.
J'ai donc une 1ère table qui a son index, une clef étrangère (int), date de début et date de fin (en varchar(10)) , et le type de propriété (tinyint).
Les dates sont toutes au format YYYYMMDD, et il y a les deux pour de la location, et seulement la date du début pour un achat.
Sachant qu'un même véhicule peut avoir été loué, puis acheté.
Dans une autre table j'ai (entre autres) son index, clef étrangère (int), immatriculation (varchar(30)), n° de dossier (varchar(12)), volume de carburant consommé (int) et la date de conso (varchar(10))
Et je veux avoir pour une période donnée, le volume total de carburant des véhicules du dossier, mais dans l'état de la date la plus récente.
Voici ma requête actuelle :
ce qui me donne comme résultats:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT SUM(releves.volume) AS volimmat, releves.immat, VehPeriodes.typeprop, VehPeriodes.datdeb, VehPeriodes.datfin FROM releves INNER JOIN VehPeriodes ON releves.cptveh=VehPeriodes.cptveh WHERE releves.nodoss='FRT00008FR' AND ((VehPeriodes.typeprop=1 AND VehPeriodes.datfin='' AND VehPeriodes.datdeb>'20090107' AND VehPeriodes.datdeb<'20091231') OR (VehPeriodes.typeprop>1 AND VehPeriodes.datfin>'20090107' AND VehPeriodes.datfin<'20091231')) GROUP BY releves.immat, VehPeriodes.typeprop, VehPeriodes.datdeb, VehPeriodes.datfin ORDER BY immat ASC;
volimmat immat typeprop datdeb datfin
2721 2242XB 1 20090706
2721 2242XB 3 20040305 20090705
2607 2244Xx 1 20090702
2607 2244Xx 3 20040401 20090701
Alors, les véhicules sont les bons, mais je voudrais avoir seulement l'état le plus récent, donc ce cas-là, la 1ère et la 3ème ligne.
Comment puis-je faire ça?? ça fait un moment de je cherche, mais je ne suis pas très expérimenté en SQL...
Merci d'avance!!!
Partager