Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Поиск уникальных значений из нескольких столюцов [2]
Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012
Помог: 30 раз(а)
Ну пример того, какой массиы должен получитсья в конце, и чтобы не пришлось по нему пробегаться еще раз в php. Думаю проблема решаемая на уровне запроса.
ksedin
Отправлено: 18 Сентября, 2014 - 14:48:32
Гость
Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014
Помог: 0 раз(а)
RickMan пишет:
Ну пример того, какой массиы должен получитсья в конце, и чтобы не пришлось по нему пробегаться еще раз в php. Думаю проблема решаемая на уровне запроса.
Блин, в голове каша... Вроде все проблемы уже решились) Лучше сейчас реализовать попробую, так легче все понять) (Добавление)
RickMan пишет:
Ну пример того, какой массиы должен получитсья в конце, и чтобы не пришлось по нему пробегаться еще раз в php. Думаю проблема решаемая на уровне запроса.
Нужно, чтоб только одна строка из них отображалась
RickMan
Отправлено: 18 Сентября, 2014 - 16:01:20
Участник
Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012
Помог: 30 раз(а)
А какая именно? Запрос выдал:
Цитата:
1 2
2 1
Почему именно одна? И какая одна?
ksedin
Отправлено: 18 Сентября, 2014 - 16:14:14
Гость
Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014
Помог: 0 раз(а)
RickMan пишет:
А какая именно? Запрос выдал:
Цитата:
1 2
2 1
Почему именно одна? И какая одна?
Я делаю личные сообщения на сайте, записываю все сообщения в одну таблицу.
На одной странице мне нужно вывести все диалоги, то есть ники тех, с кем обался пользователь.
Цитата:
1 2
2 1
В этом случае снчачала пользователь с id 2 шлет сообщение пользователю с id 1, потом пользователь с id 1 шлет сообщение пользователю с id 2.
По сути, фигурируют лишь два пользователя и мне нужна только одна запись та, у которой время отправки позже, но это просто, главное, чтоб отловить лишь одну запись
RickMan
Отправлено: 18 Сентября, 2014 - 16:17:04
Участник
Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012
- если нужно последнее из вот того что получилось то просто добавь это..
Нет, мне нужно все, но по одному
Sail
Отправлено: 18 Сентября, 2014 - 16:55:48
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
ksedin пишет:
На одной странице мне нужно вывести все диалоги, то есть ники тех, с кем обался пользователь
Так ники, или диалоги?!
В итоге на странице должны быть все последние сообщения, обращенные "мне" (одному пользователю с id === user_id от разных пользователей с id === user2_id)?
Или все последние сообщения, обращенные всем пользователям?
А табличка из первоначального поста точно содержит лишь два поля и просто фиксирует факт наличия сообщения от user2_id к user_id?!
ksedin
Отправлено: 18 Сентября, 2014 - 17:45:21
Гость
Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014
Помог: 0 раз(а)
Sail пишет:
Так ники, или диалоги?!
В итоге на странице должны быть все последние сообщения, обращенные "мне" (одному пользователю с id === user_id от разных пользователей с id === user2_id)?
Или все последние сообщения, обращенные всем пользователям?
А табличка из первоначального поста точно содержит лишь два поля и просто фиксирует факт наличия сообщения от user2_id к user_id?!
Мне нужно, как в ВК, ники. Выведу сам, мне нужно лишь айди выловить.
Разумеется, что таблице содержит больше значений, просто убрал воду и оставил только проблему. Модель таблицы вот:
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
ну с диалогами тут есть несколько ситуаций
1) вам нужно отобразить список диалогов для конкретного пользователя (того кто сейчас авторизирирован)
2) нужно отобразить сообщения по конкретному диалогу для конкретного пользователя
мне в голову приходят решения с юнионами джоинами и групировками, так что задачка действительно нетривиальная
для вывода списков диалогов у меня было примерно такое решение
Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014
Помог: 0 раз(а)
Panoptik пишет:
ну с диалогами тут есть несколько ситуаций
1) вам нужно отобразить список диалогов для конкретного пользователя (того кто сейчас авторизирирован)
2) нужно отобразить сообщения по конкретному диалогу для конкретного пользователя
мне в голову приходят решения с юнионами джоинами и групировками, так что задачка действительно нетривиальная
для вывода списков диалогов у меня было примерно такое решение
Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014
Помог: 0 раз(а)
Sail пишет:
Выбираем из таблицы для одного получателя (myid) всех отправителей и время последнего сообщения.
Выходит, что если пользователь сам отправил сообщение, не получив при этом ответа - диалог не будет отображаться?
Мелкий
Отправлено: 18 Сентября, 2014 - 20:46:01
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
ksedin пишет:
Что хранится в dialogUserId?
user_id собеседника.
Решения задачи в лоб слишком тяжеловесны. Сделайте отдельно таблицу диалогов, ссылающуюся на последнее сообщение в переписке. Для этой задачи (как и многих других в вебе) характерно существенное превалирование чтения над записью.
----- PostgreSQL DBA
ksedin
Отправлено: 18 Сентября, 2014 - 21:11:14
Гость
Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014
Помог: 0 раз(а)
Решения задачи в лоб слишком тяжеловесны. Сделайте отдельно таблицу диалогов, ссылающуюся на последнее сообщение в переписке.[/quote]
Пока не совсем понимаю, как мне это поможет, можно подробней?
Мелкий
Отправлено: 18 Сентября, 2014 - 21:23:22
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Как чем поможет? Джойните по внешнему ключу и получаете сразу последние сообщения в диалогах.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.