...(SELECT Host, MAX(RecordingDate) AS LastRecordingDate FROM PingLog GROUP BY Host) LastPing...
Sous-requête qui ramène pour chaque Host la dernière RecordingDate. Cette sous-requête est "aliassée"
![:oops:](https://www.developpez.net/forums/images/smilies/icon_redface.gif)
LastPing pour pouvoir être utilisée dans la requête principale. A partir de là, elle est considérée comme une table nommée LastPing, et ayant pour champs Host et LastRecordingDate.
Ensuite, on fait la jointure avec PingLog ("aliassée" cette fois AllPing pour bien faire la distinction. Ce n'est peut-être pas indispensable, mais à mon sens, ça clarifie.) pour ramener le Status qui pour chaque Host, correspond à la dernière RecordingDate (d'où la jointure sur Host et sur LastRecordingDate)
1 2
| ...INNER JOIN HostList ON HostList.Host=AllPing.Host
WHERE HostList.ShowInMonitor='Y' ... |
Jointure sur HostList pour filtrer sur les Host pour lesquels ShowInMonitor est à "Y"
N.B. : En gros, pour comprendre que ce fait une requête, il faut la prendre "à l'envers" : d'abord les tables sources : les FROM, les JOIN et les "faux WHERE" qui réalisent en fait des jointures. Là si on tombe sur des sous-requêtes, on les analyse en premier. Ensuite, on regarde les "vrais WHERE", et enfin les SELECT.
Partager