Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

выборка контактов с количеством сообщений и сортировкой по дате и наличию новых сообщений (timasik)
Author Message
timasik
Заглянувший



Joined: 09 Jan 2011
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Sun Jan 09, 2011 3:11 am (написано за 10 минут 33 секунды)
   Post subject: выборка контактов с количеством сообщений и сортировкой по дате и наличию новых сообщений
Reply with quote

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

$user_id - идентификатор пользователя

таблица users
id|name

таблица messages
id|kto|komu|new|kogda

kto и komu - это id из таблицы users
new - имеет значение 1 или 2 (2 - это новое, 1 - прочитанное получателем)
kogda - значение в time()

Задача:

1. Выбрать всех уникальных отправителей и получателей сообщений от пользователя $user_id
2. Получить имена из базы users
3. Сортировать по дате сообщения (kogda DESC) и значению (new DESC) если отправитель не $user_id

Вообщем суть вывода контактов в таком виде:

Владимир (3/1 новое)
Маша (12/2новых)
Наташа (12)

Бьюсь 4 дня но ничего не получается.
Если возможно это сделать одним запросом.
Помогите...
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Mon Jan 10, 2011 9:16 am (спустя 1 день 6 часов 4 минуты; написано за 3 минуты 17 секунд)
   Post subject:
Reply with quote

Примерно так
Code (SQL): скопировать код в буфер обмена
SELECT u1.name AS FROM, u2.name AS TO, count(m.*) AS ALL, SUM(IF(m.new=2,1,0)) AS new
FROM messages AS m
INNER JOIN users AS u1 ON u1.id=m.kto
INNER JOIN users AS u2 ON u2.id=m.komu
WHERE m.kto=? OR m.komu=?
GROUP BY m.kto, m.komu
ORDER BY kogda DESC, new DESC
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML