Selct at once ou distinct en mysql

Mattyghan -  
 Mattyghan -
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é ?

3 réponses

  1. Mattyghan
     
    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
  2. Mattyghan
     
    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
  3. Mattyghan
     
    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