diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index 54d0a299dfd3f0d5115308819371c67ef098b11a..61d69095322f62a08162a3fc8e51dd6e8fbab851 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -904,9 +904,13 @@ SqlBuilder.prototype.join = function(pTable, pCondition, pAlias, pPrefix)
     if (pAlias)
         postfix = pAlias + " " + postfix;
     
-    var joinPart = SqlBuilder._getStatement(pTable, "join", postfix);
+    var joinPart = SqlBuilder._getStatement(pTable, prefix, postfix);
     var conditionPart = SqlBuilder._getStatement(pCondition);
-    this._joins.push(SqlBuilder.mergePreparedQueries([joinPart, conditionPart]));
+    
+    joinPart._sqlStorage += " " + conditionPart._sqlStorage;
+    joinPart.preparedValues = joinPart.preparedValues.concat(conditionPart.preparedValues);
+    
+    this._joins.push(joinPart)
     return this;
 }
 
@@ -1553,14 +1557,16 @@ SqlBuilder._getStatement = function (pElement, pPrefix, pPostfix, pAutoJoin)
         preparedValues: preparedValues,
         _sqlStorage: pElement.toString()
     };
-    
+
     function _getElement (element)
     {
         var isSubQuery = false;
         if (element instanceof SqlBuilder)
         {
+            if (element.isFullSelect())
+                isSubQuery = true;
+                
             element = element.build();
-            isSubQuery = true;
         }
         preparedValues = preparedValues.concat(element[1]);
         if (isSubQuery || pAutoJoin)