sql多表替换表中的结果

时间:2012-08-23 22:23:22

标签: sql-server select union

我有一个巨大的 MSSQL数据库(近120场演出)。该数据库包含1371个表。这些表中只有3个是我当前关注的表。

我将与之合作的表格:

  1. 消息
  2. MessageUser
  3. 用户
  4. 我将与之合作的“消息”表中的字段:

    • 主题
    • 身体
    • FromMessageUserID
    • PriorityID

    Messages.FromMessageuserID 匹配 MessageUser.MessageUserID

    我将与之合作的表“MessageUser”中的字段:

    • MessageUserID
    • 用户ID

      MessageUser.UserID User.UserID

    • 相匹配

    我将与之合作的“用户”表中的字段:

    • 用户ID
    • 用户名

    现在我可以运行以下查询: SELECT Subject,Body,FromMessageUserID,PriorityID 来自消息

    并获得显示的结果:

    主体Body FromMessageUserID PriorityID

    Sub1 Body1 1001 1

    Sub2 Body2 1002 3

    Sub3 Body3 1001 2

    所以我想看看谁发送了以“Sub3”为主题的消息。

    我首先查看MessageUser表,我可以看到MessageUserID为1001的UserID为10.

    然后我转到Users表,我可以看到UserID为10的用户名为“JohnDoe”。

    我有什么方法可以运行查询,并且返回的结果类似于:

    主体Body FromMessageUserID PriorityID

    Sub1 Body1 JohnDoe 1

    Sub2 Body2 JaneDoe 3

    Sub3 Body3 JohnDoe 2

    我不关心PriorityID,因为我知道值(总共4个)是什么。

    我确信正确的方法是使用JOIN或UNION,但我从未使用它们,而且我在过去几个小时内所做的每一次尝试都失败了。

    有什么建议吗?

1 个答案:

答案 0 :(得分:1)

试试这个

SELECT m.Subject, m.Body, u.UserName,m.PriorityID FROM Messages m
inner join MessageUser mu on mu.MessageUserId = m.FromMessageUserID
inner join users u on mu.UserID = u.UserID