Добавление дополнительного поля в SQL-запрос - PullRequest
0 голосов
/ 03 августа 2010

У меня есть запрос, который я написал для системы личных сообщений, но я хотел бы добавить поле extar в запрос, но не уверен, как это сделать.

В данный момент он получает имя пользователяотправитель, но не получатель, но он, тем не менее, получает оба идентификатора отправителя / получателя.

Как мне добавить дополнительное поле в моем запросе, чтобы получить имя пользователя получателя?Я думал о вложенном выборе.

Вот мой текущий запрос

SELECT p.*, u.username as sender, DATE_FORMAT(u.signup_date, '%b %Y') as joindate, m.avatar FROM privatemsgrec p INNER JOIN users u ON p.senderid=u.userid INNER JOIN misc m ON m.userid=u.userid WHERE p.messageid='1' LIMIT 1

, а вот структура таблицы

CREATE TABLE IF NOT EXISTS `misc` (
  `miscid` int(4) NOT NULL auto_increment,
  `userid` int(4) NOT NULL default '0',
  `profpic` varchar(100) NOT NULL default '',
  `avatar` varchar(100) NOT NULL default '',
  `signature` text NOT NULL,
  `alerts` enum('y','n') NOT NULL default 'y',
  PRIMARY KEY  (`miscid`)
)

CREATE TABLE IF NOT EXISTS `privatemsgsent` (
  `messageid` int(10) NOT NULL auto_increment,
  `senderid` int(4) NOT NULL default '0',
  `recipientid` int(4) NOT NULL default '0',
  `subject` varchar(255) NOT NULL default '',
  `message` text NOT NULL,
  `datesent` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`messageid`)
)

CREATE TABLE IF NOT EXISTS `users` (
  `userid` int(25) NOT NULL auto_increment,
  `first_name` varchar(25) NOT NULL default '',
  `email` varchar(255) NOT NULL default '',
  `username` varchar(25) NOT NULL default '',
  `password` varchar(32) NOT NULL default '',
  `salt` char(3) NOT NULL default '',
  `sex` varchar(6) NOT NULL default '',
  `user_level` enum('0','1','2','3') NOT NULL default '0',
  `signup_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `last_login` datetime NOT NULL default '0000-00-00 00:00:00',
  `activated` enum('0','1') NOT NULL default '0',
  PRIMARY KEY  (`userid`)
)

1 Ответ

1 голос
/ 03 августа 2010
SELECT p.*, 
    us.username as sender, ur.username as recipient, 
    DATE_FORMAT(u.signup_date, '%b %Y') as joindate, m.avatar
FROM privatemsgrec p 
INNER JOIN users us ON p.senderid = us.userid 
INNER JOIN users ur ON p.recipientid = ur.userid 
INNER JOIN misc m ON m.userid = u.userid 
WHERE p.messageid = '1' 
LIMIT 1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...