這個問題很難得到好的標題,但我會在下面進行詳細解釋。我將簡化這些表格,使問題更容易提出。如何從用戶名中獲取用戶名(SQL聯接)
我有一個名爲「用戶」與下面的列表:
UserRowId (PK)
FirstName
LastName
RegionRowId (FK)
Active
我有一個名爲「區域」與下面的列表:
RegionRowId
RegionDesc
UserRowId
這裏的邏輯是,一個用戶屬於由用戶表中的RegionRowId標識的「區域」。每個地區(在「地區」表中)都有一個地區經理,由「地區」表中的「UserRowId」列(來自「用戶」表的FK)註明。
我有一個叫做「UserTime」與下面的列表:
UserTimeRowId (PK)
UserRowId (FK)
Hours
Sales
這裏的邏輯是用戶(通過UserRowId映射)報告時間和銷售,其獲取存儲在該表中。每次用戶報告銷售/小時數時,都會創建一個新行。
我試圖做到:
我想寫一個查詢,將拉動名字,姓氏,這個用戶的區域經理的時間總和,總和的銷售額。
這是我到目前爲止有:
查詢:
SELECT dbo.[User].FirstName, dbo.[User].LastName,
dbo.[Region].UserRowId AS RegManager, dbo.[Region].RegionDesc AS Desc,
SUM(dbo.[UserTime].Sales) AS Sales, SUM(dbo.[UserTime].Hours) AS Hours
FROM dbo.[UserTime]
INNER JOIN dbo.[User] ON dbo.[UserTime].UserRowid = dbo.[User].UserRowId
INNER JOIN dbo.[Region] ON dbo.[User].RegionRowId = dbo.[Region].RegionRowId
WHERE dbo.[User].Active = 1
GROUP BY dbo.[User].FirstName, dbo.[User].LastName,
dbo.[Region].UserRowId, dbo.[Region].RegionDesc
輸出(例如):
FirstName LastName RegManager RegionDesc Sales Hours
Bob Man 773 NYC 500 5
什麼我有麻煩的是:
我不能(對我來說)獲取區域管理器的LastName(上面輸出中的RegManager列)而不是UserRowId。我知道在我的查詢中我拉dbo。[Region] .UserRowId很明顯,這就是我會在輸出中得到的。但是,我需要的是使用該ID來交叉引用用戶表來提取該管理器的名稱。
當我嘗試加入用戶表,並由UserRowId區表,我得到區域經理的列表,而不是用戶的列表,並且該用戶的區域經理一列。
我需要一個子查詢來完成這個嗎?
任何幫助表示讚賞,並請讓我知道,如果我需要澄清任何問題以得到解決方案。
謝謝
對於做得好的問題+1。 – Lucero