Soucis de distinct MYSQL

Résolu/Fermé
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 - 13 janv. 2010 à 21:49
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 - 14 janv. 2010 à 22:57
Bonjour, pour mon forum, je voudrais afficher distinctement mes forums (thématiques) dans l'ordre du plus recent au plus ancien des posts qui s'y trouvent...

voila ma requette qui ne fonctionne pas : (elle me renvoie bien les forum mais pas dans lordre voulu)


SELECT forum , datepost FROM monforum GROUP BY forum ORDER BY datepost DESC


mes datespost sont stokées en timestamp (INT)

exemple table :

FORUM_____ SUJET______MESSAGE_________DATEPOST

nature_____poissons_____blablablabla________150
nature_____maisons_____blablablabla_________80
nature_____etoiles______blablablabla_________120
passion____vélo________blablablablabla_______180
passion____piscine______blablablablabla_______60
amour_____julie________blablablabla_________140


et je voudrai que cela me sorte donc :

passion
nature
amour

du plus recent (180) au plus vieu (140)

j'espere avoir été sufisament clair dans mes explications ^^, je vous remercie pour votre coup de main

21 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
14 janv. 2010 à 22:40
Essaye:
SELECT forum
FROM ( SELECT forum, MAX(datepost)
FROM cocforum
GROUP BY forum
order by MAX(datepost) desc
) as tab
1
rescue Messages postés 1039 Date d'inscription vendredi 16 novembre 2007 Statut Contributeur Dernière intervention 27 mars 2019 136
13 janv. 2010 à 22:04
Bonsoir,

Sauf erreur de ma part, car je ne peux pas tester :
select distinct forum from mon_forum order by datepost desc

@+
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
13 janv. 2010 à 22:51
non ca ne fonctionne pas si c'était si simple je me poserai pas la question... :)
0
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
14 janv. 2010 à 00:07
Bonsoir Rudak,


SELECT forum, MAX(datepost)
  FROM mon_forum
  GROUP BY forum
  ORDER BY datepost DESC


ou

SELECT forum, MAX(datepost)
  FROM mon_forum
  ORDER BY datepost DESC
  GROUP BY forum


ou

SELECT forum, d
  FROM ( SELECT forum, MAX(datepost)  d
                FROM mon_forum
                GROUP BY forum
           )
  ORDER BY datepost DESC



0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 09:31
aucune des 3 ne renvoi le résultat dans l'ordre voulu


CREATE TABLE IF NOT EXISTS `cocforum` (
`forum` varchar(80) collate latin1_general_ci NOT NULL,
`sujet` varchar(80) collate latin1_general_ci NOT NULL,
`texte` text collate latin1_general_ci NOT NULL,
`pseudoposteur` varchar(45) collate latin1_general_ci NOT NULL,
`nbrevues` int(5) NOT NULL,
`datepost` int(20) NOT NULL,
`idpost` int(6) NOT NULL auto_increment,
`statut` int(1) NOT NULL,
PRIMARY KEY (`idpost`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=180 ;


voila ma table si quelqu'un veu tester chez lui
0
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
14 janv. 2010 à 21:03
Bonsoir Rudak,

Je viens de créer ta table et insérer le jeu de données que tu as mentionné dans ton post.

Là dessus, j'ai exécuté l'ordre SQL suivant :
  SELECT forum
    FROM ( SELECT  forum, MAX(datepost)
                   FROM  cocforum
                   GROUP BY forum
        )


... et pour le SGBD Oracle, le résultat est conforme à tes spécifications.
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 21:36
moi cette requette me renvoie une erreur sous mysql via phpmyadmin

#1248 - Every derived table must have its own alias
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
14 janv. 2010 à 21:41
Salut,
SELECT forum
FROM ( SELECT forum, MAX(datepost)
FROM cocforum
GROUP BY forum
) as tab //si tu veux le faire sous mysql..
@+
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 21:54
c'est toujours pas dans l'ordre du plus recent au plus ancien...
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
14 janv. 2010 à 22:11
Essaye avec le order by!!
SELECT forum
FROM ( SELECT forum, MAX(datepost)
FROM cocforum
GROUP BY forum
order by datepost desc
) as tab
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 22:16
oui jai essayé mais ca ne ressort toujours pas dans l'ordre
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
14 janv. 2010 à 22:19
Avec cette requête, j'ai le meme resultat que BadGuitarist (sous mysql...) et conforme à ce qui est demandé....
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 22:21
je teste directement sous phpmyadmin et le resultat n'est pas bon
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
14 janv. 2010 à 22:22
et en console mysql??
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 22:34
jvien de tester directement dans mon script et ca ne marche pas plus que sur phpMyAdmin
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
14 janv. 2010 à 22:35
On peut voir ton script?
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 22:36
--
-- Structure de la table `cocforum`
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 22:39
voila le code qui ne t'aidera pas beaucoup plus...


$resultfofo=mysql_query("SELECT forum FROM ( SELECT forum, MAX(datepost) FROM cocforum $seulforum GROUP BY forum order by datepost desc ) as tab") or die(mysql_error());

while($dataforum = mysql_fetch_array($resultfofo))
{
       $forum = addslashes( $dataforum['forum'] );
       echo $forum."<br>";
}
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 22:44
ok la a premiere vue ca a l'air de retourner les infos corectement je teste avec le script et jte dit mais je pense que c bon :) (jespere)
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
14 janv. 2010 à 22:47
je confirme ca marche merci beaucoup d'avoir persisté :)
cette requette ma mise a bout de nerf depuis plus de 3 semaines... :)
merci encore !
0