2012-01-18 52 views
0

我有以下MYSQLMYSQL连接3台

SELECT T2.name as username, T2.id as userid, 
     T2.lastactivity as lastactivity, T2.photo as avatar 
FROM exchange AS T2 
    INNER JOIN 
    (SELECT (CASE WHEN `buddy`.`penpalA` = 887 
        THEN `buddy`.`penpalB` 
        ELSE `buddy`.`penpalA` 
       END) AS 'friend' 
     FROM `buddy` 
     WHERE status = 1 AND `penpalA` = 887 
     OR `penpalB` = 887 
    ) AS _Temp 
    ON _Temp.friend = T2.`id` 

如何添加另一个表给它为了得到其他的细节,其中__Temp.friend现在T3.userid是共同点

+1

恭喜你?这有什么问题吗? – 2012-01-18 21:36:32

+0

@JakeStainer所以你的问题是什么? – Karlson 2012-01-18 21:36:44

+0

我如何添加另一个表到连接,并从另一个表中的用户标识符链接到它的细节 – Jake 2012-01-18 21:38:14

回答

1

试试这个:

SELECT T2.name as username, T2.id as userid, 
      T2.lastactivity as lastactivity, T2.photo as avatar,T3.* 
    FROM exchange AS T2 
     INNER JOIN 
     (SELECT (CASE WHEN `buddy`.`penpalA` = 887 
         THEN `buddy`.`penpalB` 
         ELSE `buddy`.`penpalA` 
        END) AS 'friend' 
      FROM `buddy` 
      WHERE status = 1 AND `penpalA` = 887 
      OR `penpalB` = 887 
     ) AS _Temp 
     ON _Temp.friend = T2.`id` 
    LEFT JOIN details T3 ON _Temp.friend=T3.UserId 
+0

嗨,即时通讯只获取结果,其中用户标识实际存在于T3中,我需要它,以便如果T3中什么都没有,那么它只是显示空白 – Jake 2012-01-18 21:51:52

+0

我将最后的JOIN更改为左连接,应该做你想要的... – Sparky 2012-01-18 21:59:47