Bonjour,

Voici une requête typique SQL que je n'arrive jamais a faire.
Je prend un exemple au hasard afin d'en discuter.
J'ai une table VOITURE(id, nom, couleur, prix)
Et j'ai une table REPARATION(id,idVoiture, dateReparation, raisonReparation, prixReparation)

Je souhaite afficher pour chaque voiture la réparation la plus ancienne avec la dateReparation, la raisonReparation.

Si je fais:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT voiture.id, min(dateReparation)
FROM VOITURE
LEFT JOIN REPARATION on voiture.id = reparation.idVoiture
group by voiture.id
j'ai bien pour chaque voiture la date de reparation la plus ancienne.

Maintenant je veux la emme chose en ayant seulement en plus la raisonReparation

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT voiture.id, min(dateReparation), raisonReparation
FROM VOITURE
LEFT JOIN REPARATION on voiture.id = reparation.idVoiture
group by voiture.id, raisonReparation
Je suis donc obligé de la rajouter dans le group by et du coup j'ai plus seulement la réparation la plus ancienne mais les réparation les plus ancienne pour chaque raisonReparation différentes. Ce qui veut dire que si j'ai 2 raison différentes j'ai 2 lignes. Or moi je ne veux que la raison de la réparation la plus ancienne.

Comment faut-il procéder?

Merci,