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
Qui ne me donne aucun resultat :/
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)
Alors que la requete suivante me les renvoie toutes :
Donc pourquoi un HAVING MAX ne me renvoie rien
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
Autre requete par un MAX dans le select sans HAVING :
qui me donne :
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
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.
![]()
Partager