Jag använder SQL Server 2008, du säger inte vilken databas du använder.
Från den information du har tillhandahållit verkar din fråga alltför komplex för den utdata du behöver. Här är en enkel fråga för att få alla meddelanden som involverar användare 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
Jag har varit tvungen att ändra några fältnamn eftersom i SQL Server några av de namn du har valt är reserverade ord.
SQL Fiddle:http://sqlfiddle.com/#!3/b8e88/1
EDIT: Nu har du lagt till lite mer information och visat att det finns ett id
fältet i meddelandetabellen, kan du använda något i stil med detta (notera:jag har SQL Server så du kommer förmodligen att behöva ändra frågan för 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
SELECT
i FROM
en del av frågan hittar det senaste meddelandet (baserat på id
, jag antar att det är ett automatiskt inkrementerande nummer) för varje beställt par av avsändare/mottagares användar-ID. Resultatet av det återförenas med Fed_Messages
tabell för att säkerställa att vi får namnen för avsändare/mottagare korrekta.
Uppdaterad SQL Fiddle:http://sqlfiddle.com/#!3/1f07a/2