所以我有两个表。一个表(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个八比特组决定。 –