[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Немного изменил запрос, проверьте пжл
Страницы: 1, 2
Миша
Собственно задача была такая : '

user posted image

На примере будет проще объяснить, в VK личные сообщения показывают так,
последние отправленные с каждым пользователем и не важно входящие или исходящие.

Мне нужно сделать что-то подобное, есть таблица выше, из неё при помощи пользователей этого форума был написан запрос, который я немного подправил, вот он:


select t.* from ( select max(id) id from table group by id_poluch) a
left join table t on t.id = a.id
WHERE `id_otpr` = '$Id_настоящего пользователя'
order by id_poluch



Такой запрос правильно переделан?

_____________
Принимаю заказы, писать в ЛС
Kusss
твой даже составлен не верно.
Ну вот так должно работать. Все последние сообщения юзверя. Входящие или исходящие.
SELECT 
*
FROM
`table`
WHERE
id_otpr = $id OR
id_poluch = $id
GROUP BY
id_poluch,
id_otpr
ORDER BY
msg_date_time DESC
Миша
Цитата (Kusss @ 6.04.2015 - 18:46)
твой даже составлен не верно.
Ну вот так должно работать. Все последние сообщения юзверя. Входящие или исходящие.
SELECT 
*
FROM
`table`
WHERE
id_otpr = $id OR
id_poluch = $id
GROUP BY
id_poluch,
id_otpr
ORDER BY
msg_date_time DESC

Получается в каждой группе (каждый пользователь), берём последнее сообщение?

_____________
Принимаю заказы, писать в ЛС
Kusss
последнее сообщение из каждого диалога.
S.Chushkin
Цитата (Kusss @ 6.04.2015 - 18:46)
Ну вот так должно работать. Все последние сообщения юзверя. Входящие или исходящие.

Запрос неправильный.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Миша
Цитата (S.Chushkin @ 7.04.2015 - 04:32)
Цитата (Kusss @ 6.04.2015 - 18:46)
Ну вот так должно работать. Все последние сообщения юзверя. Входящие или исходящие.

Запрос неправильный.

Почему? Или как правильно для такой задачи?

_____________
Принимаю заказы, писать в ЛС
Миша

user posted image

Таким образом получаем отправленные сообщения:

SELECT * 
FROM (
SELECT *
FROM `table`
ORDER BY `id` DESC
) AS orderTable
GROUP BY `id_poluch`
HAVING `id_otpr` = '$id'


А так входящие:

SELECT * 
FROM (
SELECT *
FROM `table`
ORDER BY `id` DESC
) AS orderTable
GROUP BY `id_otpr`
HAVING `id_poluch` = '$id'


А как объединить?

_____________
Принимаю заказы, писать в ЛС
Kusss
да мой запрос действительно не правильный
johniek_comp
id_poluch id_otpr что это? дай нормальные названия

_____________
user posted image
Миша
Цитата (johniek_comp @ 7.04.2015 - 13:08)
id_poluch id_otpr что это? дай нормальные названия

получатель / отправитель и Да у меня другие названия, а это для примера

_____________
Принимаю заказы, писать в ЛС
Миша
S.Chushkin опроверг такой вариант использования, так есть ли какие-то решения или кастыли на php делать?

_____________
Принимаю заказы, писать в ЛС
Игорь_Vasinsky
Цитата
S.Chushkin опроверг такой вариант использования,


в личку отпиши S.Chushkin и усё. делов то biggrin.gif

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Миша
Смысл в том, что бы показывать последние сообения как в VK, и не важно кто последний отправил я или мой собеседник, всё равно показывать только последнее с каждым пользователем

_____________
Принимаю заказы, писать в ЛС
ApuktaChehov
SELECT message
FORM `messages`
WHERE
id_otpr = $id OR id_poluch = $id
ORDER BY id DESC
LIMIT 1

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

P.S. При условии, что id увеличивается у каждой новой записи в таблице. Если нет, то можно по дате отсортировать.

_____________
Kusss
ApuktaChehov
Это не то. Нужно последнее сообщение из всех диалогов.
только тут проблема в следующем:
id_otpr = 1 и id_poluch = 2
id_otpr = 2 и id_poluch = 1
это один и тот-же диалог. И нужно вывести последнее сообщение.

id_otpr = 1 и id_poluch = 3
id_otpr = 4 и id_poluch = 1
и это тоже отдельные диалоги.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.