如何加入这些表以显示相关的用户名?

时间:2011-12-23 11:07:36

标签: asp.net sql sql-server

我有三个表格配置文件,消息和登录相关如下图所示,我想显示消息发送者和消息接收者的用户名(消息表中的最后一行)。此查询仅显示与接收方ID关联的用户名。我该怎么办?

SELECT     Login.Username, 
           Messages.Subject, 
           Messages.Text,
           Messages.Status, 
           Messages.Id, 
           Messages.Senduserid, 
           Messages.Recuserid
FROM     Login INNER JOIN  Messages 
        ON  Login.Profileid =  Messages.Recuserid

关系

enter image description here

2 个答案:

答案 0 :(得分:5)

您需要两次加入登录表。一次为您想要拔出的每个用户。 (它们是替代品,但这通常是最简单和最常见的)。

为此,您需要为Login表的每个引用提供不同的Alias ...

SELECT
  Message.*,
  sender.Username,
  receiver.Username
FROM
  Messages
INNER JOIN
  Login            AS sender
    ON sender.Profileid = Messages.Senduserid
INNER JOIN
  Login            AS receiver
    ON receiver.Profileid = Messages.Recuserid

答案 1 :(得分:1)

您可以通过加入登录表两次来使用它

SELECT     a.Username as ReceivedUsername,
           b.Username as SentUsername,
           c.Subject, 
           c.Text,
           c.Status, 
           c.Id, 
           c.Senduserid, 
           c.Recuserid
FROM     Login a, Login b, Messages c
        where  c.Recuserid = a.Profileid and c.Senduserid = b.Profileid