Last active
December 18, 2015 15:29
-
-
Save PoTHuYJoHN/5804752 to your computer and use it in GitHub Desktop.
Select user dialogs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SELECT * FROM `messages` JOIN (SELECT if(sender_id = 12, receiver_id, sender_id) AS user_id_other, MAX(cdate) as date_time_max FROM `messages` WHERE sender_id = 12 OR receiver_id = 12 GROUP BY IF(sender_id = 12, receiver_id, sender_id)) as t ON if(sender_id = 12, receiver_id, sender_id) = user_id_other AND cdate = date_time_max JOIN `users` ON `users`.id = IF(`messages`.sender_id = 12, `messages`.receiver_id, `messages`.sender_id) WHERE sender_id = 12 OR receiver_id = 12 ORDER BY cdate DESC LIMIT 11 OFFSET 0 | |
PHP | |
public static function getListByUser($user_id, $limit) { | |
$query = "`messages` | |
JOIN (SELECT if(sender_id = {$user_id}, receiver_id, sender_id) AS user_id_other, MAX(cdate) as date_time_max FROM `messages` | |
WHERE sender_id = {$user_id} OR receiver_id = {$user_id} | |
GROUP BY IF(sender_id = {$user_id}, receiver_id, sender_id)) as t ON if(sender_id = {$user_id}, receiver_id, sender_id) = user_id_other AND cdate = date_time_max | |
JOIN `users` ON `users`.id = IF(`messages`.sender_id = {$user_id}, `messages`.receiver_id, `messages`.sender_id) | |
WHERE sender_id = {$user_id} OR receiver_id = {$user_id} | |
ORDER BY cdate DESC"; | |
return self::getList(array( | |
'select' => 'messages.message, messages.id,messages.cdate,messages.isRead, users.user_name,users.avaToken,users.id as userId', | |
'from' => $query, | |
),true,true,$limit); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment