What you want to do is select users messages. You also want to select one path per message. Here is an example on how to do this:
SELECT msg.userid, msg.messages, users.fullname,
(select max(path) from profile where profile.userid = msg.userid) as maxpath
FROM messages AS msg
LEFT JOIN users ON msg.userid = md5( users.userid )
ORDER BY msg.date ASC;
You can also use group_concat instead of max, to get a list of all paths. Also the sub select can be more complex, with looking for the last date for instance (provided there is a date information in that table).
Why do you left outer join users to messages by the way? Are there messages without associated users?