Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 36
1

Вывод последних сообщений

18.07.2014, 14:06. Показов 1109. Ответов 2
Метки нет (Все метки)

Помогите дорабоатать
PHP
1
2
3
4
mysql_query("SELECT u.id, mes.text  FROM users AS u, messages AS mes
WHERE (mes.recipient=u.id && mes.sender=5) || (mes.recipient=5 && mes.sender=u.id)
group by if(mes.sender=5,mes.recipient,mes.sender)
order by mes.datenew desc");
Данный запрос по идеи должен выводить последнее сообщение пользователя 5 с каким либо другим пользователем. Что он собственно и делает на половину. Но выводит список всех пользователей с которыми пользователь 5 вел общение. Но заместо последнего сообщения он выводит первое. И сама сортировка от последнего к первому выполняется неверно.

Она выполняется верно если сделать так.
PHP
1
order by max(mes.datenew) desc
Но я не уверен что это решение является правильным.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2014, 14:06
Ответы с готовыми решениями:

Корпоративный чат, вывод последних сообщений
Здравствуйте пишу чат и возникла проблема, написал запрос сообщения выводятся и группируются но к...

Система личных сообщений. Вывод списка сообщений.
Доброе время суток! Возникла проблема с почтой, а конкретно не могу вывести всю переписку...

Вывод последних строк
Хочу сделать вывод последних добавленных строк черех аякс. Получается это что то типа чата, но...

Вывод последних статей
Здравствуйте. Немного нубский вопрос. Помогите сделать вывод последних статей из базы. Собственно...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
2
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
19.07.2014, 11:04 2
chrome,
1. Если id-ы сообщений возрастают, можно группировать по ним (не нужен лишний индекс).
2. Вместо order by max(...) проще и быстрее будет limit 1.
3. Зачем тут группировка? (может она по логике работы и нужна, из запроса это не видно).
Итого, получаем:
MySQL
1
2
3
SELECT u.id, mes.id, mes.text  FROM users AS u, messages AS mes
WHERE (mes.recipient=u.id && mes.sender=5) || (mes.recipient=5 && mes.sender=u.id)
ORDER BY mes.id DESC LIMIT 1
(ну или ORDER BY mes.datenew, если более старая запись как-то может получить старший id)
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 36
19.07.2014, 14:21  [ТС] 3
Цитата Сообщение от sKotenok Посмотреть сообщение
SELECT u.id, mes.id, mes.text FROM users AS u, messages AS mes
WHERE (mes.recipient=u.id && mes.sender=5) || (mes.recipient=5 && mes.sender=u.id)
ORDER BY mes.id DESC LIMIT 1
Данный запрос выводит последнее сообщение которые было отправлено или подучено пользователем. А мне необходимо список всех пользователей с которыми пользователь 5 вступал в переписку. И также вывод текста последнего сообщения которое фигурировалось в переписке с тем или иным пользователем

Мой запрос выше выводи всех пользователей с которым пользователь 5 вступал в переписку но вот последнее сообщение от или каждому пользователю я получить не могу

Добавлено через 38 минут
MySQL
1
SELECT mes.id AS mesid FROM  messages AS mes group by if(mes.sender=$CURUSER,mes.recipient,mes.sender) order by mes.id desc
Привел запрос к такому виду и понял что он сперва разбивает на группы, а лишь затем сортирует по Id А вот как сделать так что бы он сперва сортировал по ID, а лишь потом разбивал по группам ?

Добавлено через 15 минут
Конечно можно сделать так.
MySQL
1
SELECT mes.id AS mesid FROM ( SELECT * FROM messages ORDER BY id DESC) AS mes group by if(mes.sender=$CURUSER,mes.recipient,mes.sender) ORDER BY mes.id DESC
Но может можно обойти под-запросы? И сделать все одним
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2014, 14:21

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Вывод последних трех записей из БД
Помогите вывести последние 3 записи из БД Нужно что бы последние 3 записи из БД выводились в эти...

Вывод последних добавленых строк
Здравствуйте! Подскажите как должен выглядеть запрос на вывод трех последних добавленных записей в...

Вывод сообщений из БД
Здравствуйте. В БД есть записи с личными сообщениями. При нажатии на кнопку выводится список...

Вывод сообщений
Здравствуйте есть запрос SELECT crm_chat.id, crm_chat.sel, crm_chat.peers, crm_chat.messege,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.