The common field in all inventory tables is _ResourceGuid which is the Global Identifier of the computer. Here is the query I use for HDD info:
-- Hard Drive Details
-- v2014_10_29
DECLARE @v1_TrusteeScope nvarchar(max)
SET @v1_TrusteeScope = N'%TrusteeScope%'
SELECT DISTINCT
vc.Guid as [_ItemGuid],
vc.Name [Computer Name],
sn1.[Manufacturer],
sn1.[Model],
sn1.[Identifying Number] [Serial Number],
disk.Model [HDD],
diskstore.[Max Media Size (Kilobytes)]/1024/1024 [Size GB],
( SELECT TOP 1 CC.[StartTime] FROM [evt_ns_client_config_request] CC
WHERE CC.[ResourceGuid] = vc.[Guid]
ORDER BY CC.[StartTime] DESC
) AS [Last Config Request],
vc.Domain,
vc.[IP Address],
vc.[User] [Primary User],
vc.[OS Name],
vc.[OS Revision]
FROM vComputer vc
LEFT JOIN vHWComputerSystem sn1 ON sn1.[_ResourceGuid] = vc.Guid
LEFT JOIN Inv_HW_Logical_Device disk on disk._ResourceGuid = vc.Guid and disk.[Device ID] = '\\.\PHYSICALDRIVE0' and disk.Model not like 'VMware%'
LEFT JOIN Inv_HW_Storage diskstore on diskstore._ResourceGuid = vc.Guid and diskstore.[Device ID] = '\\.\PHYSICALDRIVE0'
WHERE vc.[IsManaged] = 1
AND VC.[OS Name] not like '%server%'
--AND ([vc].[Guid] IN (SELECT [ResourceGuid] FROM [ScopeMembership] WHERE [ScopeCollectionGuid] IN (SELECT [ScopeCollectionGuid] FROM dbo.fnGetTrusteeScopeCollections(@v1_TrusteeScope))))
ORDER BY vc.Name