Slectionner les id les plus grand de certain groupe, je ne sais pas si c'est cla
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008
-
19 avril 2008 à 13:43
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008
-
20 avril 2008 à 16:48
Salut a vous et encore merci pour vos aides.
Je suis en train de faire un forum. Le problème est de classer les sujet en fonction de du dernier message contenu dans le sujet et par ordre décroissant.
Pour cela j'ai deux tables, une table sujet qui contient le libellé du sujet, id du sujet etc... et une table message qui contient contient les messages, l'id du sujet auquel le message se raporte et un id pour chaque ligne de message.
J'ai fait la requette suivante mais ca ne marche pas bien vu que ca ne me sort pas le résultat dans le bonne ordre.
SELECT tablemessage.idsujet,tablemessage.idmessage,idmessage, tablesujet.idsujet AS idsuj, tablesujet.idsujet AS suje FROM tablesujet LEFT JOIN tablemessage ON tablesujet.idsujet=tablemessage.idsujet WHERE tablesujet.categorie='$idg' GROUP BY tablemessage.idsujet ORDER BY tablemessage.idmessage DESC
Cayégorie correspond a un "dossier" ou thème du forum, il s'agit aussi de listé les sujet d'un thème ou catégorie du forum.
Je ne sais pas si vous avez assez d'info pour m'aider, si ce n'est pas le cas j'en rajoute...
Merci a vous
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008 19 avril 2008 à 14:22
Dans les essais que j'ai fait il semble qu'il me les classe par ordre idsujet ou il classe dans le bonne ordre mais oublie le dernier message enregistré donc le résultat final est dans le désordre. Je ne sais pas dans quel ordre il classe ce ne sont que des suppositions. Voila le print_r d'une requete :
[0] => 38 [sujet] => 38 [1] => 60 [idmessage] => 60 [2] => 60 [3] => 38 [idsu] => 38 [4] => Retest de classement [suje] => Retest de classement )
[0] => 37 [sujet] => 37 [1] => 59 [idmessage] => 59 [2] => 59 [3] => 37 [idsu] => 37 [4] => Test de classement [suje] => Test de classement )
[0] => 34 [sujet] => 34 [1] => 53 [idmessage] => 53 [2] => 53 [3] => 34 [idsu] => 34 [4] => mieux tourner autour [suje] => mieux tourner autour )
[0] => 33 [sujet] => 33 [1] => 52 [idmessage] => 52 [2] => 52 [3] => 33 [idsu] => 33 [4] => mieux tourner autour [suje] => mieux tourner autour
En fait la ligne "test de classement" devrait être devant "restest de classement" car elle a un idmessage = 61 mais elle ne s'affiche pas, il y a deux message enregistré dans test de classement le 59 et le 61.
Est ce que c'est plus clair ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 19 avril 2008 à 20:05
SELECT tablemessage.idsujet,tablemessage.idmessage,idmessage,
tablesujet.idsujet AS idsuj, tablesujet.idsujet AS suje FROM tablesujet
LEFT JOIN tablemessage ON tablesujet.idsujet=tablemessage.idsujet WHERE
tablesujet.categorie='$idg' ORDER BY
tablemessage.idsujet DESC, tablemessage.idmessage DESC
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008 20 avril 2008 à 16:48
En fait j'ai trouver la solution a force de faire des recherche sur le net. Avec MAX(idmessage) idmessage au debut et aussi une petite faute de synthaxe il ne dallait pas mettre GROUP BY tablemessage.idsujet mais simplement GROUP BY idsujet.
En fait le GROUP BY c'est pour rassembler tout les message d'un même sujet sinon j'ai autant de sujet en résultat su'il y a de message ce qui n'est pas bon.
Je n'ai pas testé ta solution mais merci de t'être penché sur le problème qui en plus doit pas être trés compréhensible a mon avis.