• Модуль: 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; }