diff --git a/src/Search/Provider/SQLProvider.php b/src/Search/Provider/SQLProvider.php index 1e18d0f8c50..e4f84269411 100644 --- a/src/Search/Provider/SQLProvider.php +++ b/src/Search/Provider/SQLProvider.php @@ -3669,6 +3669,18 @@ public static function constructSQL(array &$data) $COMMONLEFTJOIN = \Search::addDefaultJoin($data['itemtype'], $itemtable, $already_link_tables); $FROM .= $COMMONLEFTJOIN; + // need to reorder $data['tocompute'] that contains searchoption ID + // to be sure that all LEFT JOIN related to count operation (searchoption datatype = count)) + // are done after all other LEFT JOIN + $ordered_data_to_compute = $data['tocompute']; + foreach ($data['tocompute'] as $key => $val) { + if (isset($searchopt[$val]["datatype"]) && $searchopt[$val]["datatype"] == 'count') { + unset($ordered_data_to_compute[$key]); //remove key + array_push($ordered_data_to_compute, $val); //add it at end + } + } + $data['tocompute'] = $ordered_data_to_compute; + // Add all table for toview items foreach ($data['tocompute'] as $val) { if (!in_array($searchopt[$val]["table"], $blacklist_tables)) {