- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_entity_list_builder.php
- Класс: \CCrmEntityListBuilder
- Вызов: CCrmEntityListBuilder::GetRoughRowCount
static function GetRoughRowCount(&$arSql, $tableName, $tableAlias = '', $dbType = '')
{
global $DB;
$tableName = strval($tableName);
$tableAlias = strval($tableAlias);
$dbType = strval($dbType);
if($dbType === '')
{
$dbType = 'MYSQL';
}
else
{
$dbType = mb_strtoupper($dbType);
}
if($dbType !== 'MYSQL')
{
return CSqlUtil::GetRowCount($arSql, $tableName, $tableAlias, $dbType);
}
$subQuery = $tableAlias !== ''
? "SELECT {$tableAlias}.ID FROM {$tableName} {$tableAlias}"
: "SELECT ID FROM {$tableName}";
if ($arSql['FROM'] !== '')
{
$subQuery .= ' '.$arSql['FROM'];
}
if ($arSql['WHERE'] !== '')
{
$subQuery .= ' WHERE '.$arSql['WHERE'];
}
if ($arSql['GROUPBY'] !== '')
{
$subQuery .= ' GROUP BY '.$arSql['GROUPBY'];
}
$query = "SELECT COUNT(*) as CNT FROM ($subQuery ORDER BY NULL LIMIT 0, 5000) AS T";
$rs = $DB->Query($query, false, 'File: '.__FILE__.'
Line: '.__LINE__);
$result = 0;
while($ary = $rs->Fetch())
{
$result += intval($ary['CNT']);
}
return $result;
}