Index: kernel/classes/ezcontentobject.php
===================================================================
--- kernel/classes/ezcontentobject.php	(revision 23786)
+++ kernel/classes/ezcontentobject.php	(working copy)
@@ -3201,7 +3201,7 @@
         {
             if ( isset( $params['IgnoreVisibility'] ) )
             {
-                $showInvisibleNodesCond = self::createFilterByVisibilitySQLString( $params['IgnoreVisibility'] );
+                $showInvisibleNodesCond = self::createFilterByVisibilitySQLString( $params['IgnoreVisibility'], 'inner_object' );
             }
         }
 
@@ -3220,21 +3220,22 @@
 
         if ( $db->databaseName() == 'oracle' )
         {
-            $relationTypeMasking .= " AND bitand( relation_type, $relationTypeMask ) <> 0 ";
+            $relationTypeMasking .= " AND bitand( inner_link.relation_type, $relationTypeMask ) <> 0 ";
         }
         else
         {
-            $relationTypeMasking .= " AND ( relation_type & $relationTypeMask ) <> 0 ";
+            $relationTypeMasking .= " AND ( inner_link.relation_type & $relationTypeMask ) <> 0 ";
         }
 
         if ( $reverseRelatedObjects )
         {
+            $outerObjectIDSQL = 'outer_object.id = outer_link.from_contentobject_id';
             if ( is_array( $objectID ) )
             {
                 if ( count( $objectID ) > 0 )
                 {
-                    $objectIDSQL = ' AND ezcontentobject_link.to_contentobject_id in (' . $db->implodeWithTypeCast( ', ', $objectID, 'int' ) . ') AND
-                                    ezcontentobject_link.from_contentobject_version=ezcontentobject.current_version';
+                    $objectIDSQL = ' AND inner_link.to_contentobject_id in (' . $db->implodeWithTypeCast( ', ', $objectID, 'int' ) . ')
+                                     AND inner_link.from_contentobject_version = inner_object.current_version';
                 }
                 else
                 {
@@ -3244,24 +3245,29 @@
             else
             {
                 $objectID = (int) $objectID;
-                $objectIDSQL = ' AND ezcontentobject_link.to_contentobject_id = ' .  $objectID . ' AND
-                                ezcontentobject_link.from_contentobject_version=ezcontentobject.current_version';
+                $objectIDSQL = " AND inner_link.to_contentobject_id = $objectID
+                                 AND inner_link.from_contentobject_version = inner_object.current_version";
             }
-            $select = " count( DISTINCT ezcontentobject.id ) AS count";
         }
         else
         {
-            $select = " count( ezcontentobject_link.from_contentobject_id ) as count ";
-            $objectIDSQL = " AND ezcontentobject_link.from_contentobject_id='$objectID'
-                                AND ezcontentobject_link.from_contentobject_version='$version'";
+            $outerObjectIDSQL = 'outer_object.id = outer_link.to_contentobject_id';
+            $objectIDSQL = " AND inner_link.from_contentobject_id = $objectID
+                             AND inner_link.from_contentobject_version = $version";
         }
-        $query = "SELECT $select
+
+        $query = "SELECT
+                    COUNT( outer_object.id ) AS count
                   FROM
-                    ezcontentobject, ezcontentobject_link
+                    ezcontentobject outer_object, ezcontentobject inner_object, ezcontentobject_link outer_link
+                  INNER JOIN
+                    ezcontentobject_link inner_link ON outer_link.id = inner_link.id
                   WHERE
-                    ezcontentobject.id=ezcontentobject_link.from_contentobject_id AND
-                    ezcontentobject.status=" . eZContentObject::STATUS_PUBLISHED . " AND
-                    ezcontentobject_link.op_code='0'
+                    $outerObjectIDSQL
+                    AND outer_object.status = " . eZContentObject::STATUS_PUBLISHED . "
+                    AND inner_object.id = inner_link.from_contentobject_id
+                    AND inner_object.status = " . eZContentObject::STATUS_PUBLISHED . "
+                    AND inner_link.op_code = 0
                     $objectIDSQL
                     $relationTypeMasking
                     $showInvisibleNodesCond";
