Sto usando SQL Server 2008, non dici quale database stai usando.
Dalle informazioni che hai fornito la tua query sembra eccessivamente complessa per l'output richiesto. Ecco una semplice query per ottenere tutti i messaggi che coinvolgono l'utente 36:
SELECT
sender.msg_user_name AS sender_user_name
,recipient.msg_user_name AS recipient_user_name
,msg_date
,msg_text
FROM
dbo.Fed_Messages
INNER JOIN dbo.Fed_User AS sender
ON sender.msg_user_id = sender_user_id
INNER JOIN dbo.Fed_User AS recipient
ON recipient.msg_user_id = recipient_user_id
WHERE
sender_user_id = 36
OR recipient_user_id = 36
ORDER BY
msg_date DESC
Ho dovuto modificare alcuni nomi di campo poiché in SQL Server alcuni dei nomi che hai scelto sono parole riservate.
SQL Fiddle:http://sqlfiddle.com/#!3/b8e88/1
MODIFICA: Ora hai aggiunto altre informazioni e mostrato che c'è un id
campo nella tabella dei messaggi, potresti usare qualcosa del genere (nota:ho SQL Server quindi probabilmente dovrai cambiare la query per MySQL):
SELECT sender.msg_user_name AS sender_user_name
,recipient.msg_user_name AS recipient_user_name
,msg_date
,msg_text
FROM dbo.Fed_Messages
INNER JOIN dbo.Fed_User AS sender ON sender.msg_user_id = sender_user_id
INNER JOIN dbo.Fed_User AS recipient ON recipient.msg_user_id = recipient_user_id
INNER JOIN ( SELECT MAX(id) AS most_recent_message_id
FROM dbo.Fed_Messages
GROUP BY CASE WHEN sender_user_id > recipient_user_id
THEN recipient_user_id
ELSE sender_user_id
END -- low_id
,CASE WHEN sender_user_id < recipient_user_id
THEN recipient_user_id
ELSE sender_user_id
END -- high_id
) T ON T.most_recent_message_id = dbo.Fed_Messages.id
WHERE sender_user_id = 36
OR recipient_user_id = 36
ORDER BY msg_date DESC
Il SELECT
nel FROM
parte della query trova il messaggio più recente (basato su id
, suppongo che sia un numero a incremento automatico) per ogni coppia ordinata di ID utente mittente/destinatario. Il risultato viene ricongiunto a Fed_Messages
tabella per assicurarci di ottenere i nomi di mittente/destinatario corretti.
SQL Fiddle aggiornato:http://sqlfiddle.com/#!3/1f07a/2