Bonjour, j'ai un problème sur une requête utilisant JOIN

J'ai 5 tables differentes:

REVISION, WAGONS, COMPOSITION, BF, CONTRAT

Je cherche à connaitre le nombre de km parcuru par un wagon depuis sa dernière révision.
les km se trouvent dans la table BF réliée à WAGON par l'intermédiare de COMPOSITION.

Mon problème est le suivant:
ma requete fonctionne lorsqu'il n'y a qu'une seule entrée dans la Table REVISION pour un wagon donnée.
dès lors que j'ajoute une nouvelle entrée (une date plus récente) ma requete ajoute
le nombre de km supérieur à la premiere entrée et le nombre de km supérieur à la deuxième.

Comment faire pour qu'il ne m'indique 'que' le nombre de km supérieur à la date de révision la plus récente?

Voici ma requete:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT w.id AS id, MAX(r.date) AS date, SUM(b.km) AS km
	FROM `wagons` w
		JOIN `revision` r
		ON w.id = r.id_wagon
		JOIN `composition` c
		ON w.id = c.id_wagons
		JOIN `bf` b
		ON c.id_bf = b.id
	WHERE b.date_bf > date AND b.id_contrat = ?
GROUP BY w.id

Merci beacoup pour votre aide j'avoue que je sèche depuis des heures.....