|
|
|
| Здравствуйте, уважаемые пользователи форума! Делается внутренняя почта.
Имеется таблица в которой хранятся сообщения:
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
(28.08.2012 в 17:25)
| | uP | |
|
|
|
|
|
|
|
для: p.pavluxa
(28.08.2012 в 17:25)
| | - это о чем? | |
|
|
|
|
|
|
|
для: Sfinks
(29.08.2012 в 14:47)
| | Опечатка, iCorrespondentID | |
|
|
|
|
|
|
|
для: 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`
|
| |
|
|
|