Hi there, I am trying to trim down this query to something a little more readable.
The query itself creates a view from a real table called 'network', only returning the latest value for each unique nic_name for a particular key (latest being defined by the datetimestamp value)
Code:CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `network_view` AS select `t2`.`key` AS `key`, `t2`.`nic_name` AS `nic_name`, `t2`.`nic_vp` AS `nic_vp`, `t2`.`nic_ipmp` AS `nic_ipmp`, `t2`.`nic_ip` AS `nic_ip`, `t2`.`nic_mac` AS `nic_mac`, `t2`.`nic_mask` AS `nic_mask`, `t2`.`nic_bcast` AS `nic_bcast`, `t2`.`nic_zone` AS `nic_zone`, `t2`.`nic_link` AS `nic_link`, `t2`.`nic_duplex` AS `nic_duplex`, `t2`.`nic_speed` AS `nic_speed`, `t2`.`nic_switch` AS `nic_switch`, `t2`.`nic_port` AS `nic_port`, `t2`.`nic_vlan` AS `nic_vlan`, `t2`.`nic_status` AS `nic_status`, `t2`.`datetimestamp` AS `datetimestamp` from `network` `t2` where ((`t2`.`key`,`t2`.`nic_name`,`t2`.`datetimestamp`) in (select `network`.`key` AS `key`, `network`.`nic_name` AS `nic_name`,max(`network`.`datetimestamp`) AS `MAX(datetimestamp)` from `network` where ((`network`.`key` = `t2`.`key`) and (`network`.`nic_name` = `t2`.`nic_name`)) group by `network`.`key`,`network`.`nic_name`) and (`t2`.`nic_status` <> 'removed')) order by `t2`.`key`,`t2`.`nic_name`
I have tried this but its doesnt seem to be working
Is there something I am missing when trying to simplify this query ?Code:CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `original` AS select t2.key , t2.nic_name , t2.nic_vp , t2.nic_ipmp , t2.nic_ip , t2.nic_mac , t2.nic_mask , t2.nic_bcast , t2.nic_zone , t2.nic_link , t2.nic_duplex , t2.nic_speed , t2.nic_switch , t2.nic_port , t2.nic_vlan , t2.nic_status , t2.datetimestamp FROM network t2 WHERE ((t2.key,t2.nic_name,t2.datetimestamp) IN (SELECT network.key , network.nic_name , MAX(network.datetimestamp) FROM network WHERE ((network.key = t2.key) AND (network.nic_name = t2.nic_name)) GROUP BY network.key,network.nic_name) AND(t2.nic_status <> 'removed')) ORDER BY t2.key,t2.nic_name;
any help would be greatly appreciated









Bookmarks