Skip to content

Instantly share code, notes, and snippets.

@PoTHuYJoHN
Last active December 18, 2015 15:29
Show Gist options
  • Save PoTHuYJoHN/5804752 to your computer and use it in GitHub Desktop.
Save PoTHuYJoHN/5804752 to your computer and use it in GitHub Desktop.
Select user dialogs
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