2010-08-03 4 views
0

개인 메시지 시스템 용으로 작성한 쿼리가 있지만 쿼리에 익명 필드를 추가하고 싶지만이를 수행하는 방법을 모르겠습니다.SQL 쿼리에 추가 필드가 추가되었습니다.

현재받는 사람의 사용자 이름을 가져 오지만받는 사람은 아니지만 보낸 사람 /받는 사람의 ID는 모두 가져옵니다.

내 검색어에 추가 입력란을 추가하여 수취인의 사용자 이름을 얻는 방법은 무엇입니까? 중첩 선택에 대해 생각했습니다. 여기

는 테이블 구조 내 현재 쿼리

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
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