powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Список разговоров в чате - как сгруппировать?
8 сообщений из 8, страница 1 из 1
Список разговоров в чате - как сгруппировать?
    #39164036
ADsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем здравия.... столкнулся с проблемкой....
имеем таблицу chat c полями
- id (идетнификатор сообщения)
- id_from (от кого)
- id_to (кому)
- message (сообщение)
- data (дата сообщения)

Имеется задача вывести список всех разговоров конкретного пользователя... например $id_user чтоб показывал последнюю дату разговора и последнее сообщение
соответственно разговор от id_from -> id_to и наоборот - это один разговор....
делаю так

Код: sql
1.
2.
3.
4.
5.
6.
SELECT MAX(c1.data) as last_date, c1.message as last_msg
FROM chat AS c1
LEFT JOIN chat AS c2 ON c1.id_from=c2.id_to
WHERE (c1.id_from=$id_user OR c1.id_to=$id_user) AND c1.id_to!=c2.id_from
GROUP BY c.id_to, c.id_from
ORDER BY last_date DESC



результат выдает но не тот что ожидаю... иногда промелькивают что разговоры 1 -> 2 и 2 -> 1 это разные.. .а не в один объединяет.. ну и сообщение last_message явно не последнее в разговоре всегда .... первый берет

Где что не так?
...
Рейтинг: 0 / 0
Список разговоров в чате - как сгруппировать?
    #39164077
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADsoftИмеется задача вывести список всех разговоров конкретного пользователя.
Вот это понятно... но всё, что написано дальше, либо противоречит задаче, либо вообще неясно нафига написано.
Ну и вдогонку - непонятно, в каком именно виде их надо "вывести".
...
Рейтинг: 0 / 0
Список разговоров в чате - как сгруппировать?
    #39164097
ADsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробую уточнить .. список начатых разговоров
например

вася
пете
привет
1

вася
маше
и тебе привет
2

маша
васе
хай
3

маша
миша
рама
4

для пользователя Вася должны получить список
вася - петя, привет
вася - маша, хай

для пользователя маша
маша- вася, хай
маша - миша, рама

вывести в виде: кто с кем разговоаривал, когда последний раз, какое последнее сообщение
...
Рейтинг: 0 / 0
Список разговоров в чате - как сгруппировать?
    #39164115
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAQ: Выборка первой/последней записи в группах
Для решения задачи ещё добавь в запросе к полям таблицы расчётное поле, равное id второго абонента вне зависимости от того, кто именно кому именно постил, и группируй по нему.
...
Рейтинг: 0 / 0
Список разговоров в чате - как сгруппировать?
    #39164135
ADsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina добавь в запросе к полям таблицы расчётное поле, равное id второго абонента вне зависимости от того, кто именно кому именно постил, у.
а это как?
...
Рейтинг: 0 / 0
Список разговоров в чате - как сгруппировать?
    #39164224
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
CASE id_from
WHEN $id_user 
THEN id_to 
ELSE id_from 
END
...
Рейтинг: 0 / 0
Список разговоров в чате - как сгруппировать?
    #39169121
ADsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
ага.... сделал немного раньше чем подсказали и через if
Код: sql
1.
SELECT IF(id_from=$id_user,id_to,id_from) as id_user_chat ..... GROUP BY id_user_chat


И даже последние сообщения через соединение с датовремей и вырезание сделал..... еднственное что теперь не получается -
количество сообщений в каждом чате, и кол-во непрочитанных в каждом чате
пытаюсь количество найти как
Код: sql
1.
 COUNT()

.. непрочитанных как SUM(status) (просто статус 0 или 1)
он мне дает соверешено какие-то дикие результаты

может ткнете носом в обсуждение похожие?
...
Рейтинг: 0 / 0
Список разговоров в чате - как сгруппировать?
    #39169131
ADsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри ступил .. лишний ненужный left join убрал, который и плодил безобразия

Всем спасибо за помощь!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Список разговоров в чате - как сгруппировать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]