Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何联接这些表以显示关联的用户名?_Asp.net_Sql_Sql Server - Fatal编程技术网

Asp.net 如何联接这些表以显示关联的用户名?

Asp.net 如何联接这些表以显示关联的用户名?,asp.net,sql,sql-server,Asp.net,Sql,Sql Server,我有三个表配置文件、消息和登录名,它们如下图所示,我想显示消息发送者和消息接收者的用户名(消息表中最后两行)。此查询仅显示与接收方id关联的用户名我能做什么 SELECT Login.Username, Messages.Subject, Messages.Text, Messages.Status, Messages.Id, Messages.Senduserid,

我有三个表配置文件、消息和登录名,它们如下图所示,我想显示消息发送者和消息接收者的用户名(消息表中最后两行)。此查询仅显示与接收方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
关系


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

为此,您需要为登录表的每个引用指定一个不同的别名

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

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

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

@DEM跑开了,对更多使用
符号的人大喊大叫。我们都注定了!!![此外,这是否有效?使用
符号,在
上使用
,而不是
何处
?]@Dems为什么这么严重?。。。修正了这件事。。忘了删除它:PSorry,这是一种滑稽的说法,我个人同意
JOIN
应该总是优先于
:)@Dems我理解你,伙计。我只是想讽刺一下!!