IF (SELECT object_id('numbers')) IS NOT NULL
BEGIN
DROP TABLE numbers
END
IF (SELECT object_id('KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo')) IS NOT NULL
BEGIN
DROP TABLE KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo
END
IF (SELECT object_id('numbers')) IS NOT NULL
BEGIN
DROP TABLE numbers
END
IF (SELECT object_id('KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo')) IS NOT NULL
BEGIN
DROP TABLE KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo
END
--Numbers Table, assuming < 10,000 elements of delimited string
SELECT TOP 10000 IDENTITY(int,1,1) AS id
INTO numbers
FROM sys.objects s1
CROSS JOIN sys.objects s2
CROSS JOIN sys.objects s3
ALTER TABLE numbers ADD CONSTRAINT PK_numbersTEST PRIMARY KEY CLUSTERED (id) WITH FILLFACTOR=100
IF (SELECT object_id('KOPSAWN00244_USPRD1448_RVT_vHost')) IS NOT NULL
BEGIN
DROP TABLE KOPSAWN00244_USPRD1448_RVT_vHost
END
--assuming KOPSAWN00244_USPRD1448_RVT_vDatastore is tbl_Datastore
select * into KOPSAWN00244_USPRD1448_RVT_vDatastore FROM tbl_Datastore
--assuming KOPSAWN00244_USPRD1448_RVT_vHost is tbl_ESXHosts
select * into KOPSAWN00244_USPRD1448_RVT_vHost FROM tbl_ESXHosts
--get the fields you want from tbl_Datastore, also parse the hosts so 1 row per host
SELECT dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.Name, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.Address, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.CapacityMB, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.FreeMB, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.FreePERCENT,
LTRIM(RTRIM(SUBSTRING(Hosts, id, CHARINDEX(',', Hosts + ',', id) - id))) as Host
INTO dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo
FROM numbers, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore
WHERE id <= CONVERT(INT, LEN(Hosts))
AND SUBSTRING(',' + Hosts, id, 1) = ','
--final select joins to tbl_ESXHosts to get the required fields, and uses table created above to get those for the data store.
--LAST TABLE - YOU HAVE 3 TABLES IN WHERE CLAUSE BUT ONLY JOINING TO TWO, SO CARTESIAN!
--THIS WILL RUN FOR AGES AND ISNT WHAT YOU WANT
/*
SELECT dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Host, dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Model,
dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.Name, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.CapacityMB,
dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.FreeMB, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.FreePERCENT,
dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Datacenter, dbo.KOPSAWN00244_USPRD1448_RVT_vHost.[#Memory] / 1024 AS RAM,
dbo.KOPSAWN00244_USPRD1448_RVT_vHost.VirtualCentre, dbo.KOPSAWN00244_USPRD1448_RVT_vHost.LastWriteTime,
dbo.KOPSAWN00244_USPRD1448_RVT_vHost.ESXVersion
FROM dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore, dbo.KOPSAWN00244_USPRD1448_RVT_vHost
WHERE dbo.KOPSAWN00244_USPRD1448_RVT_vDatastore.Hosts = dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Host
*/
--CHANGE IT TO THIS
SELECT dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Host, dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Model,
dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo.Name, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo.CapacityMB,
dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo.FreeMB, dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo.FreePERCENT,
dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Datacenter, dbo.KOPSAWN00244_USPRD1448_RVT_vHost.[#Memory] / 1024 AS RAM,
dbo.KOPSAWN00244_USPRD1448_RVT_vHost.VirtualCentre, dbo.KOPSAWN00244_USPRD1448_RVT_vHost.LastWriteTime,
dbo.KOPSAWN00244_USPRD1448_RVT_vHost.ESXVersion
FROM dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo , dbo.KOPSAWN00244_USPRD1448_RVT_vHost
WHERE dbo.KOPSAWN00244_USPRD1448_RVT_vDatastoreHostsAndInfo.Host = dbo.KOPSAWN00244_USPRD1448_RVT_vHost.Host