J'essaye d'obtenir le dernier message d'un certain fil mais ne peux pas sembler obtenir ma bonne question. Je ne reçois pas le dernier message d'un certain fil.MySQL obtiennent le dernier message (VarChar)
Présentation
J'utilise 3 tables - messages, message_users, message_threads
Tous les messages appartiennent à un certain fil (un peu comme la façon dont les forums et les messages fonctionnent-ils?) Les utilisateurs peuvent ajouter plusieurs utilisateurs à un certain thread, de sorte que plusieurs utilisateurs peuvent s'informer mutuellement dans le même thread.
Structure de la base
messages table
id | t_id | u_id | message | time
--------+---------+--------+-----------+--------
1 | 1 | 1 | hello! | timestamp
2 | 1 | 2 | hi! | timestamp
3 | 2 | 1 | testing | timestamp
message_threads
id | author | subject
------+---------+-----------
1 | 1 | Subject 1
2 | 3 | Subject 2
3 | 2 | Subject 3
message_users
id | t_id | u_id | read | nonotice
------+---------+--------+--------+----------
1 | 1 | 1 | 0 | 0
2 | 1 | 2 | 0 | 0
3 | 2 | 1 | 1 | 0
Recherche
Ceci est la requête que je utilise, il fonctionne presque, sauf qu'il ne soit pas le dernier ID, ni le dernier message, tout des idées? (Oui, je l'ai regardé et cherché pour les questions précédentes posées au sujet de ce sujet, mais n'a pas été en mesure d'obtenir la requête fixe sur la base des réponses en quelque sorte)
SELECT
m2.message,
mt.id AS thread_id,
max(m.id) AS message_id,
max(m.time) AS time,
mt.subject
FROM message_users AS mu
LEFT JOIN message_threads AS mt ON mt.id = mu.t_id
LEFT JOIN message AS m ON m.t_id = mt.id
INNER JOIN (
select message as messages_text
from message group by t_id
) AS m2 ON m2.id = m.id
WHERE mu.u_id = 1 AND mu.read = 0 AND mu.nonotice = 0
GROUP BY mt.id
ORDER BY m.id DESC
Merci, je vais essayer notre moment je rentre chez moi, je mettrai à jour si Ça marche. Juste mis à jour la question avec l'information de la table supplémentaire. – user2949138
Génial, ça marche! Est allé avec la solution secondaire, comme le premier oen a donné un résultat de 0.05 secondes et l'autre 0.0009, merci aussi pour la suggestion quand il s'agit de conventions de nom :) – user2949138