我有几个视图和表格,我试图在一个视图中连接,为几个用户(和我自己)创建一个网站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记录并加入到该记录中。另外,在行末写上你的连接关键字,而不是开始,这使得阅读你的查询非常令人厌恶。 –