[MySQL]Группировка по условия

Тема в разделе "Базы данных", создана пользователем LEXAlForpostl, 8 дек 2017.

Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    750
    Симпатии:
    227
    Здравствуйте.
    2 таблицы
    Users (`id`, `name`)
    Messages (`id`, `sender_user_id`, `receiver_user_id`, `title`, `text`, `time`)

    Необходим запрос, который вместо messages.id из `sender_user_id`, `receiver_user_id` подставляет users.name и группирует все пары `sender_user_id`, `receiver_user_id` и наоборот `receiver_user_id`, `sender_user_id`
    Две эти строки должны попасть в одну группу.
    `sender_user_id`, `receiver_user_id`
    1(айди первого юзера), 2 (айди второго юзера)
    2(айди второго юзера) , 1(айди первого юзера)

    Без группировки запрос у меня получится вот такой:
    SELECT
    *,
    `users`.`id` as user_id
    FROM
    `messages`
    JOIN `users` ON `messages`.`sender_user_id` = `users`.`id`
    WHERE
    `messages`.`receiver_user_id` = '" . $user_info->id . "'
    OR
    `messages`.`sender_user_id` = '" . $user_info->id . "'
    ORDER BY
    `messages`.`time` DESC

    Но запрос выдает все сообщения "простынёй",а мне надо только последнее сообщение из каждой переписки конкретного юзера (не важно входящее или исходящее сообщение).
     
  2. s0urce

    s0urce Писатель

    Регистр.:
    11 июл 2016
    Сообщения:
    4
    Симпатии:
    1
    Уважаемый,
    Вы бы разместили здесь sql скрипт для создания и наполнения данных таблиц. Таким образом специалисты могли бы создать ваши таблицы, не потратив на это времени. Уважайте время специалистов, оно обычно стоит денег.
    И далее, Вы разместили бы пример результата запроса в том виде, в котором хотите получить.
    Тогда было бы более-менее понятно, что нужно сделать.
     
  3. ogiv

    ogiv Создатель

    Регистр.:
    26 апр 2013
    Сообщения:
    27
    Симпатии:
    3