我有幾個視圖和表格,我試圖在一個視圖中連接,爲幾個用戶(和我自己)創建一個網站GUI以供使用。它基本上是一個庫存系統,它將已被轉儲到SQL表+內部資產標籤+用戶訪問的購買信息鏈接在一起。表類似於:SQL Server 2008 R2查看幫助
- 資產 - 序列號,ID
- UserAudit - 用戶名,AssetsID,OfficeID,日期/時間
- 辦公室 - 位置
- 訂單 - 序列號,詳細
一些資產是計算機,UserAudit由登錄腳本填充,該腳本記錄用戶名,計算機名稱和日期/時間。我試圖創建一個鏈接基於資產列表的所有信息的視圖,而不管他們的相關表是否具有匹配的數據。對於UserAudit方面,我只想顯示最近的記錄(日期字段說明)。
我遇到問題的地方是抓取基於ComputerName的UserAudit的最高記錄,同時仍然返回其他所有列。我試圖爲UserAudit創建一個單獨的視圖並顯示'Top 1' - 但是,如果我使用「Inner Join」,並且在使用任何OUTER聯接時不顯示UserAUdit中的任何內容,則將主視圖限制爲只有1個結果。
我做了一些研究,其中一個交叉應用看起來可能是相關的,但是我之前沒有使用過它,並且嘗試不能很好地工作。該視圖目前看起來像:
SELECT TOP (100) PERCENT
dbo.AssetType.AssetType, dbo.AssetTagInventory.ID, dbo.AssetTagInventory.AssetDetail,
dbo.AssetTagInventory.Name, dbo.AssetTagInventory.Serial, dbo.AssetTagInventory.UserID,
dbo.AssetTagInventory.Age, dbo.AssetTagInventory.Notes,
dbo.vewOffices.Name AS OfficeName,
dbo.AssetTagPurchases.PurchaseDate, dbo.AssetTagPurchases.ProductDescription AS Model,
dbo.AssetTagPurchases.ID AS AECOrderNumber,
dbo.AssetTagPurchases.Vendor, dbo.AssetTagPurchases.QuotedPrice,
dbo.AssetTagPurchases.InvoicedPrice, dbo.AssetTagPurchases.InvoiceNum,
dbo.AssetTagPurchases.VendorOrderNumber, dbo.vewLogonAudit.Username,
dbo.vewLogonAudit.LoginTime
FROM
dbo.AssetTagInventory
INNER JOIN
dbo.vewLogonAudit ON dbo.AssetTagInventory.Name = dbo.vewLogonAudit.ComputerName
LEFT OUTER JOIN
dbo.AssetType ON dbo.AssetTagInventory.AssetTypeID = dbo.AssetType.ID
LEFT OUTER JOIN
dbo.vewOffices ON dbo.AssetTagInventory.OfficeID = dbo.vewOffices.ID
LEFT OUTER JOIN
dbo.AssetTagPurchases ON dbo.AssetTagInventory.Serial = dbo.AssetTagPurchases.Serial
使用嵌套子查詢僅選擇前1個UserAudit記錄並加入到該記錄中。另外,在行末寫上你的連接關鍵字,而不是開始,這使得閱讀你的查詢非常令人厭惡。 –