From 93144b641bfd186d0c27d82757ca203990dab30f Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 13 Sep 2016 15:40:27 +0200 Subject: [statistics/locations] Fix query for getting machines for a location --- modules-available/locations/page.inc.php | 4 ++-- modules-available/statistics/inc/filter.inc.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules-available/locations/page.inc.php b/modules-available/locations/page.inc.php index 5f3c87dd..1bf33dda 100644 --- a/modules-available/locations/page.inc.php +++ b/modules-available/locations/page.inc.php @@ -438,8 +438,8 @@ class Page_Locations extends Page $count = $online = $used = 0; if (Module::get('statistics') !== false) { $mres = Database::simpleQuery("SELECT lastseen, logintime FROM machine" - . " INNER JOIN subnet ON (INET_ATON(machine.clientip) BETWEEN startaddr AND endaddr)" - . " WHERE (subnet.locationid = :lid AND machine.locationid IS NULL) OR machine.locationid = :lid", array('lid' => $locationId)); + . " LEFT JOIN subnet ON (INET_ATON(machine.clientip) BETWEEN startaddr AND endaddr AND machine.locationid IS NULL)" + . " WHERE (subnet.locationid = :lid) OR (machine.locationid = :lid)", array('lid' => $locationId)); $DL = time() - 605; while ($row = $mres->fetch(PDO::FETCH_ASSOC)) { $count++; diff --git a/modules-available/statistics/inc/filter.inc.php b/modules-available/statistics/inc/filter.inc.php index b35075bc..03dba6c3 100644 --- a/modules-available/statistics/inc/filter.inc.php +++ b/modules-available/statistics/inc/filter.inc.php @@ -217,10 +217,10 @@ class LocationFilter extends Filter $joins[] = 'LEFT JOIN subnet s ON (INET_ATON(machine.clientip) BETWEEN s.startaddr AND s.endaddr)'; return 'machine.locationid IS NULL AND s.locationid IS NULL'; } else { - $joins[] = ' INNER JOIN subnet ON (INET_ATON(clientip) BETWEEN startaddr AND endaddr) '; + $joins[] = ' LEFT JOIN subnet ON (INET_ATON(clientip) BETWEEN startaddr AND endaddr AND machine.locationid IS NULL) '; $args['lid'] = $this->argument; $neg = $this->operator == '=' ? '' : 'NOT'; - return "$neg ((subnet.locationid = :lid AND machine.locationid IS NULL) OR machine.locationid = :lid)"; + return "$neg ((subnet.locationid = :lid) OR (machine.locationid = :lid))"; } } } -- cgit v1.2.3-55-g7522