diff --git a/include/class.orm.php b/include/class.orm.php
index b95735e0dca6553dfdabe9f68f0faa23153590a6..35886ad1f619298310582337a51679a931ca50ad 100644
--- a/include/class.orm.php
+++ b/include/class.orm.php
@@ -1287,6 +1287,10 @@ class QuerySet implements IteratorAggregate, ArrayAccess, Serializable, Countabl
         return $this;
     }
 
+    function addExtraJoin(array $join) {
+       return $this->extra(array('joins' => array($join)));
+    }
+
     function distinct() {
         foreach (func_get_args() as $D)
             $this->distinct[] = $D;
@@ -2633,6 +2637,18 @@ class SqlCompiler {
                 $sql .= $join.$S;
             }
         }
+
+        // Add extra joins from QuerySet
+        if (isset($queryset->extra['joins'])) {
+            foreach ($queryset->extra['joins'] as $J) {
+                list($base, $constraints, $alias) = $J;
+                $join = $constraints ? ' LEFT JOIN ' : ' JOIN ';
+                $sql .= "{$join}{$base} $alias";
+                if ($constraints instanceof Q)
+                    $sql .= ' ON ('.$this->compileQ($constraints, $queryset->model).')';
+            }
+        }
+
         return $sql;
     }
 
diff --git a/include/class.search.php b/include/class.search.php
index bc44af16be23305b4ae073c4dded6695e0c3f446..1f403f211cafdfd7d926bf3b88a2d18dc9fe557e 100644
--- a/include/class.search.php
+++ b/include/class.search.php
@@ -902,6 +902,15 @@ class SavedQueue extends CustomQueue {
             $query->aggregate(array(
                 "q{$queue->id}" => SqlAggregate::COUNT($expr, true)
             ));
+
+            // Add extra tables joins  (if any)
+            if ($Q->extra && isset($Q->extra['tables'])) {
+                $contraints = array();
+                if ($Q->constraints)
+                     $constraints = new Q($Q->constraints);
+                foreach ($Q->extra['tables'] as $T)
+                    $query->addExtraJoin(array($T, $constraints, ''));
+            }
         }
 
         $counts = $query->values()->one();