2011-06-23 62 views
3

我有两个表如下:SQL连接两列

用户

  • ID
  • 用户名
  • 电子邮件

消息

  • ID
  • 消息
  • FROMUSER
  • TOUSER

FROMUSERTOUSER具有在用户表的外键参照ID。

现在我想找回做与用户的电子邮件地址的用户加入消息,如下

| ID | Message | FROMEMAIL | TOEMAIL | 

我下面写的查询。

SELECT Step1.*, 
     users.email as ToUser 
    FROM (SELECT messages.*, 
       users.email as fromuser 
      FROM messages 
      JOIN users on messages.fromuser = users.ID) as Step1 
    JOIN users on step1.touser = users.ID 

有没有简单的方法,我可以实现这个没有子查询?

回答

11

刚刚加入的用户表两次:

SELECT Message, uf.Email AS FromEmail, ut.Email AS ToEmail 
FROM Messages 
JOIN Users uf ON Messages.FromUser = uf.Id 
JOIN Users ut ON Messages.ToUser = ut.Id