diff --git a/analytics/classes/manager.php b/analytics/classes/manager.php index 581f917ac78..80f80cd32af 100644 --- a/analytics/classes/manager.php +++ b/analytics/classes/manager.php @@ -84,15 +84,9 @@ class manager { $params = array(); - $fields = 'am.id, am.enabled, am.trained, am.target, ' . $DB->sql_compare_text('am.indicators') . - ', am.timesplitting, am.version, am.timecreated, am.timemodified, am.usermodified'; - $sql = "SELECT DISTINCT $fields FROM {analytics_models} am"; - if ($predictioncontext) { - $sql .= " JOIN {analytics_predictions} ap ON ap.modelid = am.id AND ap.contextid = :contextid"; - $params['contextid'] = $predictioncontext->id; - } + $sql = "SELECT am.* FROM {analytics_models} am"; - if ($enabled || $trained) { + if ($enabled || $trained || $predictioncontext) { $conditions = []; if ($enabled) { $conditions[] = 'am.enabled = :enabled'; @@ -102,6 +96,10 @@ class manager { $conditions[] = 'am.trained = :trained'; $params['trained'] = 1; } + if ($predictioncontext) { + $conditions[] = "EXISTS (SELECT 'x' FROM {analytics_predictions} ap WHERE ap.modelid = am.id AND ap.contextid = :contextid)"; + $params['contextid'] = $predictioncontext->id; + } $sql .= ' WHERE ' . implode(' AND ', $conditions); } $sql .= ' ORDER BY am.enabled DESC, am.timemodified DESC';