0

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

我将使用的表:

  1. 留言
  2. 消息用户
  3. 用户

我将使用的“消息”表中的字段:

  • 主题
  • 身体
  • FromMessageUserID
  • 优先ID

Messages.FromMessageuserID匹配MessageUser.MessageUserID

我将使用的“MessageUser”表中的字段:

  • 消息用户ID
  • 用户身份

    MessageUser.UserID匹配User.UserID

我将使用的“用户”表中的字段:

  • 用户身份
  • 用户名

现在我可以运行查询:SELECT Subject, Body, FromMessageUserID, PriorityID FROM Messages

并获得如下显示的结果:

主题正文 FromMessageUserID PriorityID

Sub1 主体 1 1001 1

Sub2 身体 2 1002 3

Sub3 主体 3 1001 2

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

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

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

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

主题正文 FromMessageUserID PriorityID

Sub1 Body1 JohnDoe 1

Sub2 Body2 JaneDoe 3

Sub3 Body3 JohnDoe 2

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

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

有什么建议吗?

4

1 回答 1

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
于 2012-08-23T22:48:05.297 回答