-- Update vw_network_devices view to include machines table network devices -- Date: 2025-11-13 -- Purpose: Make network_devices.asp show devices from machines table with network device types USE shopdb; DROP VIEW IF EXISTS vw_network_devices; CREATE VIEW vw_network_devices AS -- IDFs from separate table SELECT 'IDF' AS device_type, i.idfid AS device_id, i.idfname AS device_name, NULL AS modelid, NULL AS modelnumber, NULL AS vendor, NULL AS serialnumber, NULL AS ipaddress, i.description AS description, i.maptop AS maptop, i.mapleft AS mapleft, i.isactive AS isactive, NULL AS idfid, NULL AS idfname, NULL AS macaddress FROM idfs i UNION ALL -- Servers from separate table SELECT 'Server' AS device_type, s.serverid AS device_id, s.servername AS device_name, s.modelid, m.modelnumber, v.vendor, s.serialnumber, s.ipaddress, s.description, s.maptop, s.mapleft, s.isactive, NULL AS idfid, NULL AS idfname, NULL AS macaddress FROM servers s LEFT JOIN models m ON s.modelid = m.modelnumberid LEFT JOIN vendors v ON m.vendorid = v.vendorid UNION ALL -- Switches from separate table SELECT 'Switch' AS device_type, sw.switchid AS device_id, sw.switchname AS device_name, sw.modelid, m.modelnumber, v.vendor, sw.serialnumber, sw.ipaddress, sw.description, sw.maptop, sw.mapleft, sw.isactive, NULL AS idfid, NULL AS idfname, NULL AS macaddress FROM switches sw LEFT JOIN models m ON sw.modelid = m.modelnumberid LEFT JOIN vendors v ON m.vendorid = v.vendorid UNION ALL -- Cameras from separate table SELECT 'Camera' AS device_type, c.cameraid AS device_id, c.cameraname AS device_name, c.modelid, m.modelnumber, v.vendor, c.serialnumber, c.ipaddress, c.description, c.maptop, c.mapleft, c.isactive, c.idfid, i.idfname, c.macaddress FROM cameras c LEFT JOIN models m ON c.modelid = m.modelnumberid LEFT JOIN vendors v ON m.vendorid = v.vendorid LEFT JOIN idfs i ON c.idfid = i.idfid UNION ALL -- Access Points from separate table SELECT 'Access Point' AS device_type, a.apid AS device_id, a.apname AS device_name, a.modelid, m.modelnumber, v.vendor, a.serialnumber, a.ipaddress, a.description, a.maptop, a.mapleft, a.isactive, NULL AS idfid, NULL AS idfname, NULL AS macaddress FROM accesspoints a LEFT JOIN models m ON a.modelid = m.modelnumberid LEFT JOIN vendors v ON m.vendorid = v.vendorid UNION ALL -- Printers from separate table SELECT 'Printer' AS device_type, p.printerid AS device_id, p.printerwindowsname AS device_name, p.modelid, m.modelnumber, v.vendor, p.serialnumber, p.ipaddress, NULL AS description, p.maptop, p.mapleft, p.isactive, NULL AS idfid, NULL AS idfname, NULL AS macaddress FROM printers p LEFT JOIN models m ON p.modelid = m.modelnumberid LEFT JOIN vendors v ON m.vendorid = v.vendorid UNION ALL -- Network devices from machines table (machinetypeid 16-20) SELECT mt.machinetype AS device_type, ma.machineid AS device_id, COALESCE(ma.alias, ma.machinenumber) AS device_name, ma.modelnumberid AS modelid, mo.modelnumber, ve.vendor, ma.serialnumber, c.address AS ipaddress, NULL AS description, ma.maptop, ma.mapleft, ma.isactive, NULL AS idfid, NULL AS idfname, NULL AS macaddress FROM machines ma INNER JOIN machinetypes mt ON ma.machinetypeid = mt.machinetypeid LEFT JOIN models mo ON ma.modelnumberid = mo.modelnumberid LEFT JOIN vendors ve ON mo.vendorid = ve.vendorid LEFT JOIN communications c ON ma.machineid = c.machineid AND c.isprimary = 1 AND c.comstypeid = 1 WHERE mt.machinetypeid IN (16, 17, 18, 19, 20); -- Show updated view SELECT 'View updated successfully' AS status; SELECT device_type, COUNT(*) AS total FROM vw_network_devices WHERE isactive = 1 GROUP BY device_type ORDER BY device_type;