Bonjour a la communaute ,

J'essaye de ressoudre un insondable probleme de jointure ou de sous requete je ne saurai trop dire , car plus je tente des syntaxe differentes plus j'y pert mon latin.

Ce que je souhaite c'est recuperer plusieurs donnees d'une ligne d'une table contenant une valeur maximale via une jointure .

Voila ma 1ere table :

id id_pseudo titre
5 1 ma nouvelle tache
6 1 Nouvelles tables


Voila ma 2eme table :

id_etat id_tache etat date
1 5 0 1
2 5 10 3
3 6 0 2
5 5 7 5
6 6 8 6


Voila la requete par un HAVING

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT		                          
afaire.id AS id,
afaire.titre AS titre,
afaire_etat.id_tache AS id_afaire,
afaire_etat.etat AS etat,
afaire_etat.date AS date
FROM	afaire 
LEFT JOIN afaire_etat ON afaire_etat.id_tache=afaire.id 
GROUP BY titre  
HAVING afaire_etat.date=MAX(afaire_etat.date)
Qui ne me donne aucun resultat :/

Alors que la requete suivante me les renvoie toutes :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
SELECT		                          
afaire.id AS id,
afaire.titre AS titre,
afaire_etat.id_tache AS id_afaire,
afaire_etat.etat AS etat,
afaire_etat.date AS date
FROM	afaire 
LEFT JOIN afaire_etat ON afaire_etat.id_tache=afaire.id 
GROUP BY titre
Donc pourquoi un HAVING MAX ne me renvoie rien

Autre requete par un MAX dans le select sans HAVING :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
SELECT
afaire.id AS id,
afaire.titre AS titre,
afaire_etat.id_tache AS id_afaire,
afaire_etat.etat AS etat,
MAX(afaire_etat.date) AS date
FROM	afaire 
LEFT JOIN afaire_etat ON afaire_etat.id_tache=afaire.id
GROUP BY titre
qui me donne :

id titre id_afaire etat date
5 ma nouvelle tache 5 0 5
6 Nouvelles tables 6 0 6

Le probleme etant que etat = 0 alors qu'il devrait etre de 7 et de 8 .

Si un genie pouvais mettre le doigt sur ce que je n'arrive pas a saisir .

Merci d'avance.