Допомагаємо ЗСУ!

MySQL выборка последних сообщений собеседникам

🟠 20:37 Загроза ударних БпЛА Загроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
Статус: Offline
Реєстрація: 11.06.2009
Повідом.: 424
  • 🟠 20:37 Загроза ударних БпЛА Загроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #1
MySQL выборка последних сообщений собеседникам

Есть на сайте страница диалоги, она показывает всех последних людей с которыми у тебя (id 101) был чат, и последнее сообщение чата, твое, или собеседника, неважно. Вопрос, как сделать выборку этих сообщений?

Есть таблица:
message_id |user_id_from |user_id_to |date_time |state |message
1 |84 |101 |2011-07-31 19:01:34 |0 |Привет чувак!
2 |85 |101 |2011-08-01 19:37:33 |0 |Еще раз здравствуйте, не могу пользоваться "аккаун...
3 |84 |101 |2011-08-01 19:50:41 |0 |Тебе тоже привет
4 |101 |85 |2011-08-01 19:50:45 |0 |Ну привет для начала

Надо отобрать 3 и 4й месседж, т.е. последнее сообщение в чате с юзерами 84 и 85. Помогите с написанием запроса. Нужен НЕ частный случай выбора юзеров с данными id.
 
  • 🟠 20:37 Загроза ударних БпЛА Загроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #2
select * from table order by date desc limit 0,2

читаем внимательно пост, нужен НЕ частный случай, в любом случае решение было найдено

select таблица.*
from
таблица join
(
select
if(user_id_from=@myid,user_id_to,user_id_from) as user_id_other,
max(date_time) as date_time_max
from таблица
where user_id_from=@myid or user_id_to=@myid
group by if(user_id_from=@myid,user_id_to,user_id_from)
) as t on if(user_id_from=@myid,user_id_to,user_id_from)=user_id_other and date_time=date_time_max
where user_id_from=@myid or user_id_to=@myid
 
  • 🟠 20:37 Загроза ударних БпЛА Загроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #3
да, пардон, читал невнимательно. Пока писал требуемый вариант - Вы уже ответили своим вариантом.
Я своё мессаг удалил уже, сорри за наезд.
 
Назад
Зверху Знизу