Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Группировка диалогов
 
 автор: p.pavluxa   (28.08.2012 в 17:25)   письмо автору
 
 

Здравствуйте, уважаемые пользователи форума! Делается внутренняя почта.

Имеется таблица в которой хранятся сообщения:

CREATE TABLE IF NOT EXISTS `PrivateMessages` (
  `iID` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '№',
  `sCreateDate` datetime NOT NULL COMMENT 'Дата и время отправки',
  `iSenderID` int(10) unsigned NOT NULL COMMENT '№ отправителя',
  `sMessage` text NOT NULL COMMENT 'Сообщение',
  `iRecipientID` int(10) unsigned NOT NULL COMMENT '№ получателя'
  PRIMARY KEY (`iID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='Приватные сообщения' AUTO_INCREMENT=1 ;


Зная № пользователя (который просматривает страницу) нужно получить список корреспондентов с которыми у него есть переписка (хотя бы одно сообщение отправленное/принятое). Для этого использую запрос вида:

SELECT IF( `iSenderID` = [id текущего пользователя], `iRecipientID`, `iSenderID` ) as `iCorrespondentID` 
FROM `PrivateMessages` 
WHERE `iSenderID` = [id текущего пользователя] OR `iRecipientID` = [id текущего пользователя] 
GROUP BY `iUserID`


Задача состоит в том, что по мимо его номера (корреспондента) нужно ещё получить дату и текст последнего сообщения. Как это осуществить?

Заранее всем благодарен за помощь.

  Ответить  
 
 автор: p.pavluxa   (29.08.2012 в 12:49)   письмо автору
 
   для: p.pavluxa   (28.08.2012 в 17:25)
 

uP

  Ответить  
 
 автор: Sfinks   (29.08.2012 в 14:47)   письмо автору
 
   для: p.pavluxa   (28.08.2012 в 17:25)
 

GROUP BY `iUserID`
- это о чем?

  Ответить  
 
 автор: p.pavluxa   (29.08.2012 в 15:06)   письмо автору
 
   для: Sfinks   (29.08.2012 в 14:47)
 

Опечатка, iCorrespondentID

  Ответить  
 
 автор: p.pavluxa   (29.08.2012 в 17:24)   письмо автору
 
   для: p.pavluxa   (28.08.2012 в 17:25)
 


SELECT * , IF( `iSenderID` = <userid>, `iRecipientID` , `iSenderID` ) AS `iCorrespondentID` 
FROM (
    SELECT * 
    FROM `PrivateMessages` 
    WHERE `iSenderID` = <userid> OR `iRecipientID` = <userid>
    ORDER BY `iID` DESC 
) AS `t` 
GROUP BY `iCorrespondentID`

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования