0

私は巨大なMSSQLデータベース(約120ギガ)を持っています。そのデータベースには1371個のテーブルが含まれています。それらのテーブルのうち、今のところ私が関心を持っているのは3つだけです。

使用するテーブル:

  1. メッセージ
  2. MessageUser
  3. ユーザー

使用するテーブル「メッセージ」のフィールド:

  • 主題
  • FromMessageUserID
  • PriorityID

Messages.FromMessageuserIDはMessageUser.MessageUserIDと一致し

使用するテーブル「MessageUser」のフィールド:

  • MessageUserID
  • ユーザーID

    MessageUser.UserIDはUser.UserIDと一致します

使用するテーブル「ユーザー」のフィールド:

  • ユーザーID
  • ユーザー名

現在、次のクエリを実行できます:SELECT Subject、Body、FromMessageUserID、PriorityID FROM Messages

そして、そのように表示される結果を取得します。

件名本文FromMessageUserIDPriorityID

Sub1 Body1 1001 1

Sub2 Body2 1002 3

Sub3 Body3 1001 2

そこで、「Sub3」を件名にしたメッセージの送信者を確認したいと思います。

MessageUserテーブルを調べることから始めます。1001のMessageUserIDのUserIDが10であることがわかります。

次に、Usersテーブルに移動すると、UserID10のユーザー名が「JohnDoe」であることがわかります。

クエリを実行して、返される結果を次のようにする方法はありますか?

件名本文FromMessageUserIDPriorityID

Sub1 Body1 JohnDoe 1

Sub2 Body2 JaneDoe 3

Sub3 Body3 JohnDoe 2

値(合計4つ)がわかっているので、PriorityIDは気にしません。

これを実行する適切な方法は、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 に答える