所以我有兩個表。一個表(tbl1)包含通過構建的子網信息,列名爲ip_address,位置,服務器,建築物,起始IP,結束IP和子網掩碼。SQL查詢顯示不同表中列值之間的值
我有另一個表(TBL2)與
命名頂部控制檯用戶列,計算機名稱,IP地址,計算機模型,計算機操作系統和計算機序列號,我想創建一個報告,列出來自tbl2的IP地址落在tbl1中的起始IP和結束IP之間。因此,例如,如果來自tbl2的計算機的IP地址爲172.16.1.4,並且tbl1的建築物的起始IP爲172.16.1.1,結束IP爲172.16.1.254,我希望能夠在我的報告中看到該地址。
這兩個表中都沒有類似的列,所以使用JOIN語句並沒有真正爲我工作。我也在報告中使用了參數(如果有的話)。任何幫助,將不勝感激。
更新:
我知道這是很多,但它讓我有一半。我創建了一個函數來轉換值,但不知道如何調用。任何更多的指針?
SELECT * FROM Subnets_And_Locations,
(SELECT Computer_System_DATA.UserName00 AS Top_Console_User,
Computer_System_DATA.Name00 + '.' + Computer_System_DATA.Domain00 AS Computer_Name,
System_IP_Address_ARR.IP_Addresses0 AS IP_Address,
Computer_System_DATA.Model00 AS Model,
Operating_System_DATA.Caption00 AS Operating_System,
PC_BIOS_DATA.SerialNumber00 AS Serial_Number
FROM Computer_System_DATA
INNER JOIN Operating_System_DATA ON Computer_System_DATA.MachineID = Operating_System_DATA.MachineID
INNER JOIN System_IP_Address_ARR ON Computer_System_DATA.MachineID = System_IP_Address_ARR.ItemKey
INNER JOIN PC_BIOS_DATA ON Computer_System_DATA.MachineID = PC_BIOS_DATA.MachineID) AS Scope
WHERE Scope.IP_Address >= Subnets_And_Locations.Starting_IP AND Scope.IP_Address <= Subnets_And_Locations.Ending_IP
;
我不知道有一種方法來查詢這樣的數字範圍(但不是100%肯定)。我的建議是改變IP地址在表格中的存儲方式,以使這樣的查詢成爲可能。我發現[this](http://stackoverflow.com/questions/1385552/datatype-for-storing-ip-address-in-sql-server),它可以幫助你存儲數據。 – BrandonM
範圍僅由最後2個八位字節或最後3個字節決定? – objectNotFound
範圍由最後2個八比特組決定。 –