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