private function getAllPartsOfQuery()
 {
     $result = new stdClass();
     $result->selectQuery = MergedDataSetQueryMaker::DecodeStringWithCids($this->select);
     $sidsAndTablesNeeded = $this->GetAssociateArrayOfSidsAndTablesNeeded($this->inputObj->relationships);
     // var_dump($sidsAndTablesNeeded);
     $result->fromQuery = " from " . $this->GetFromPartBySidAndTableArray($sidsAndTablesNeeded);
     $joinPart = $this->GetWherePartFromRelationshipsArray($this->inputObj->relationships);
     if (strlen($joinPart) > 0) {
         $result->whereJoinQuery = " where " . $joinPart;
     } else {
         $result->whereJoinQuery = " ";
     }
     $result->whereUserConditions = "";
     $result->groupbyQuery = "";
     if (isset($this->groupby)) {
         $result->groupbyQuery = MergedDataSetQueryMaker::DecodeStringWithCids($this->groupby);
     }
     return $result;
 }
 function prepareAndRunMergedDatasetQuery($select, $inputObj, $where, $groupby, $perPage, $pageNo)
 {
     $mergedDatasetQuery = new MergedDataSetQueryMaker($select, $inputObj, $where, $groupby, $perPage, $pageNo);
     $queryInfo = $mergedDatasetQuery->GetQuery();
     $externalDBCredentials = new stdClass();
     $externalDBCredentials->driver = $queryInfo->serverInfo->driver;
     $externalDBCredentials->user_name = $queryInfo->serverInfo->user_name;
     $externalDBCredentials->password = $queryInfo->serverInfo->password;
     $externalDBCredentials->source_database = $queryInfo->serverInfo->database;
     $externalDBCredentials->server_address = $queryInfo->serverInfo->server_address;
     $externalDBCredentials->port = $queryInfo->serverInfo->port;
     $externalDBCredentials->is_local = null;
     $externalDBCredentials->linked_server_name = null;
     return ExternalDBs::ExecuteQuery($queryInfo->finalQuery, $externalDBCredentials);
 }