J'apprécierais vraiment toute aide essayant de simplifier une requête de MySQL. Le but de la requête est d'extraire les messages d'une table de messages (users_messages) qui contient les colonnes suivantes: message_id, from_id, to_id, message_content, date_sent.Essayer de simplifier une requête MySQL
Les champs from_id et to_id doivent rejoindre une table users (users) contenant ces colonnes: user_id, user_username.
De plus, je dois mentionner qu'il y a une table d'utilisateurs bloqués (users_blocked) qui filtre les messages si la fonction user_id est présente dans cette table. Tout cela fonctionne très bien et les messages sont commandés avec le plus récent en premier, c'est ce que je veux. Mon seul problème est qu'il ne tire pas le 'message_content' correspondant. c'est-à-dire qu'il tire la date la plus récente, mais pas le message le plus récent. Peut-être ai-je besoin d'une approche différente (par exemple des sous-requêtes) mais je ne peux pas comprendre ce qui se passe autour de moi.
Voici la requête:
select m.message_content,
if(from_id < to_id, concat(from_id,to_id), concat(to_id,from_id)) as ft,
if (from_id = $my_id, to_id, from_id) as other_id,
max(date_sent) as most_recent
from users_messages m
left join users_blocked ub1 on (from_id = ub1.blocked_id and ub1.user_id = $my_id)
left join users_blocked ub2 on (to_id = ub2.blocked_id and ub2.user_id = $my_id)
where
(from_id = $my_id or to_id = $my_id)
and ub1.blocked_id is null
and ub2.blocked_id is null
group by
ft
order by
most_recent desc
Désolé, voici les structures de table:
utilisateurs
user_id user_username 1 Simon 2 Amber 3 Tom
users_messages
message_id from_id to_id date_sent message_content 1 1 2 2012-07-04 11:52:12 Hello 2 1 2 2012-07-04 12:32:24 Another message 3 1 2 2012-07-04 14:00:00 Hello again
users_blocked
user_id blocked_id 1 3
S'il vous plaît inclure votre structure de table (s). Aussi - il retourne 'message_content' mais ce n'est pas la bonne valeur? Ou ça ne retourne rien? – ethrbunny
Ce n'est pas trop mal. Enfer, vous pouvez tout lire sans défilement, ce qui est toujours un bonus! –
pas terrible mais je serais probablement juste un tableau d'utilisateurs bloqués et faire un pas pour le from_id – timpone