avatar

Как в mySQL выбрать всех пользователей, с кем есть хотя бы одно сообщение и для каждого последнее сообщение

Рейтинг 3.9 из 5. Голосов: 246
Den 7 лет назад
4
,

0


Ответы (4)

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
Как в mySQL выбрать всех пользователей, с кем есть хотя бы одно сообщение и для каждого последнее сообщение
отправить
+ 0

Redy
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений
503 Mar 10
7 лет назад
CODE:
SELECT a.*, u.username , u.pics AS pic, u.idFROM message a INNER JOIN (SELECT fromuserId, MAX(`date`) AS Max_time, IF(fromuserId != 14, fromuserId, foruserId) AS user_notme FROM message WHERE (fromuserId = 14 OR foruserId = 14) AND (fromuserId <> foruserId) GROUP BY user_notme) b on ( a.`date`=b.Max_time) JOIN user u ON (u.id = IF(a.fromuserId != 14, a.fromuserId, a.foruserId))WHERE ( foruserId != 14) LIMIT 0, 10
отправить
+ 0

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
находить последнее сообщение лучше не по времени , а по ид,во первых избавитесь с проблемой перевода времени и правильной сортировкой сообщений , а во вторых с проблемой сообщений с одинаковым временем, у вас главный запрос будет дублировать список контактовпоэтому предлагаю сделать так
CODE:
SELECTa.*,u.username ,u.pics AS pic,u.idFROM message aINNER JOIN (SELECTfromuserId, MAX(id) AS max_id,IF(fromuserId != 14, fromuserId, foruserId) AS user_notmeFROM messageWHERE (fromuserId = 14 OR foruserId = 14) AND (fromuserId <> foruserId)GROUP BY user_notme) b ON (a.id = b.max_id) JOIN user u ON (u.id = IF(a.fromuserId != 14, a.fromuserId, a.foruserId))WHERE ( foruserId != 14) LIMIT 0, 10
отправить
+ 0

Redy
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений
503 Mar 10
7 лет назад
да, спасибо , так будет запрос лучше
отправить
+ 0


Чтобы оставить комментарий войдите или зарегистрируйтесь