Selct at once ou distinct en mysql

Fermé
Mattyghan - 1 mars 2010 à 22:45
 Mattyghan - 2 mars 2010 à 11:11
Yop !
Bon, bah je travaille sur mon site comme tt les soirs depuis deux ans, mais là je bloque sur une requète depuis 3 heures ; je suis presque sur d'avoir déjà trouvé la solution mais pas moyen de mettre le curseur dessus :

J'ai une table de ce type :

table_message :
id_message id_news nom_utilisateur date_message


je cherche a sortir tous les résultats, classés par date mais en sachant que je ne veux pas de doublons de id_news

Si je fais un select distinct id_news le résultat est juste, sauf que j'ai QUE mes id_news, et pas de date_message, ou autres nom_util...
Si qqn m'a compris et a une solution, je suis preneur.

Il me semblait qu'il y avait une requète du genre Select at once... mais j'ai du rêver non ? Je l'ai pas retouvé ?
A voir également:

3 réponses

Bon j'ai trouvé




SELECT DISTINCT (
id_news
), nom_util, date_message, titre_message
FROM messages
WHERE 1
group by id_news
order by date_message DESC
LIMIT 0 , 30
0
Mais j'ai un problème...

SELECT DISTINCT (id_news), nom_util, date_message, titre_message
FROM messages
WHERE id_news != 5
group by id_news
order by date_message DESC
LIMIT 0 , 30

me donne bien une liste de résultats unique de id_news ; tous ces résultats sont classés par date, mais je voudrais que ce soit chaque id_news le plus réssent qui sorte.
Et aussi en affichant une seul fois chaque id_news, comment compter à chaque sortie le nb d'id_news identique ? Avec count,
0
Pour compter le nombre de id_news (tout en en affichant qu'un seul) j'ai trouvé :

SELECT DISTINCT (id_news), nom_util, date_message, titre_message, COUNT(*) AS id_message
FROM messages
WHERE id_news != 5
group by id_news
order by date_message DESC
LIMIT 0 , 30

Mais le id news qui sort n'est toujours pas le dernier... mais le premier !
0