Je voudrai récupérer pour chaque id_topic, le post du dernier message et l'auteur de ce post.
Ma table:
MESSAGES
id_message
id_topic
author
date
Requête1:
SELECT id_topic, author, max(date) FROM messages GROUP BY(id_topic)
L'auteur qui s'affiche est la première occurence de message que mySQL trouve dans la bdd pour l'id de topic courrant. J'ai donc l'auteur du message racine du topic et non celui du dernier post...
Requête2:
SELECT id_topic, author, max(date) FROM messages
WHERE date = (SELECT max(date) FROM messages)
GROUP BY(id_topic)
Là j'ai la date du dernier post sur tous les messages de la bdd, et non pas sur celui du topic en cours...
Requête3:
SELECT id_topic, author, max(date) FROM messages
WHERE date = (SELECT max(date) FROM messages WHERE id_topic = ???)
GROUP BY(id_topic)
Je ne peux pas récupérer l'id du topic qui m'interesse dans le select du dessus...
Donc voilà, avec tout ça jsuis bien emmerdé
Je sais récupérer le résultat au final mais en envoyant 2 requêtes successives, mais je souhaite en envoyer qu'une seule... épissétou...
Je voudrai récupérer pour chaque id_topic, le post du dernier message et l'auteur de ce post.
Ma table:
MESSAGES
id_message
id_topic
author
date
Je vais supposer que la colonne id_message est un entier auto-incréménté.
Donc, plutôt que se baser sur la date, la plus grande valeur de id_message, sera le message le plus récent.
SELECT m.id_message, m.id_topic, m.author, m.date
FROM messages AS m
JOIN (
SELECT MAX(id_message) AS id_message, id_topic
FROM messages
GROUP BY id_topic
) AS td
ON td.id_message = m.id_message
AND td.id_topic = m.id_topic -- Pas forcément nécessaire.
J'avais pensé à faire une jointure de la table avec elle-même, mais d'une façon bizarre apparemment...
Merci pour la rapidité & l'efficacité!
Requête pour un forum
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.