Ответы пользователя по тегу Базы данных
  • Как лучше собрать все диалоги пользователя из таблицы сообщений в mysql?

    @wapmorgan Автор вопроса
    Решил так:
    получение количества диалогов:
    SELECT COUNT(*)
    FROM (SELECT user_id
    FROM v_user_messages
    WHERE receiver_id = 1
    UNION SELECT receiver_id
    FROM v_user_messages
    WHERE user_id = 1) as talks;


    получение последних диалогов, даты последнего в них сообщения и количество непрочтенных для текущего юзера:
    SELECT user_id, MAX(created_at) as updated_at, sum(new) as new_messages
    FROM (SELECT user_id, created_at, new
    FROM v_user_messages
    WHERE receiver_id = 1
    UNION SELECT receiver_id, created_at, 0
    FROM v_user_messages
    WHERE user_id = 1
    ORDER BY created_at DESC) as talks
    GROUP BY user_id
    ORDER BY created_at DESC;
    Ответ написан
    Комментировать