Bonjour,
voici le contexte :
Table "mp_sujets"
- mp_id (clé primaire)
- mp_titre
Table "mp_messages"
- mess_id
- mess_temps
- mess_texte
- mp_id (clé étrangère)
- membre_id (clé étrangère)
Table "mp_participants"
- mp_id (clé étrangère)
- membre_id (clé étrangère)
Ceci est un système de message privé avec la possibilité d'avoir autant de participants que je le souhaite. (un peu comme un forum avec des participants sélectionnés)
Un sujet contient juste le titre de la discution est c'est ensuite les messages qui constitue le contenu de la discution.
La table des participants permets de savoir quel membre participe à quel conversation.
Je cherche maintenant à revenir sur une requête qui marchait parfaitement mais qui prends beaucoup trop de temps maintenant que les tables contiennent un peu plus de données.
Voici mon premier problème :
Je souhaite connaitre la liste des sujets d'un participant précis (id = 1)
et
avec egalement la date du dernier message dans chaque sujet.
Voici où j'en suis :
Ensuite, si je modifie ma requete pour avoir la date du dernier message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT mps.mp_id, mps.mp_titre FROM mp_sujets mps, mp_participants mpp WHERE mpp.membre_id = 1 AND mpp.mp_id = mps.mp_id
Mais comme je m'en doutais, cela me fait une jointure avec toutes les dates de tous les messages de chaque sujet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT mps.mp_id, mps.mp_titre, mpm.mess_temps FROM mp_sujets mps, mp_participants mpp, mp_messages mpm WHERE mpp.membre_id = 1 AND mpp.mp_id = mps.mp_id AND mpm.mp_id = mps.mp_id
Comment faire en sorte de regrouper toutes ces dates et de ne récupérer que la date la plus élevé ?
J'ai essayé d'utiliser la fonction MAX mais sans succès.
Merci d'avance
Partager