- Модуль: statistic
- Путь к файлу: ~/bitrix/modules/statistic/classes/general/city.php
- Класс: CStatRegion
- Вызов: CStatRegion::GetList
function GetList($arOrder = /*.(array[string]string).*/array(), $arFilter = /*.(array[string]string).*/array())
{
$DB = CDatabase::GetModuleConnection('statistic');
$arQueryOrder = array();
if(is_array($arOrder))
{
foreach($arOrder as $strColumn => $strDirection)
{
$strColumn = mb_strtoupper($strColumn);
$strDirection = mb_strtoupper($strDirection) === "ASC"? "ASC": "DESC";
switch($strColumn)
{
case "COUNTRY_ID":
case "COUNTRY_SHORT_NAME":
case "COUNTRY_NAME":
case "REGION_NAME":
$arQueryOrder[$strColumn] = $strColumn." ".$strDirection;
break;
case "REGION":
$arQueryOrder["COUNTRY_ID"] = "COUNTRY_ID ".$strDirection;
$arQueryOrder["REGION_NAME"] = "REGION_NAME ".$strDirection;
break;
default:
break;
}
}
}
$obQueryWhere = new CSQLWhere;
$obQueryWhere->SetFields(array(
"COUNTRY_ID" => array(
"TABLE_ALIAS" => "R",
"FIELD_NAME" => "R.COUNTRY_ID",
"FIELD_TYPE" => "string",
"JOIN" => "",
),
"COUNTRY_SHORT_NAME" => array(
"TABLE_ALIAS" => "C",
"FIELD_NAME" => "C.SHORT_NAME",
"FIELD_TYPE" => "string",
"JOIN" => "",
),
"COUNTRY_NAME" => array(
"TABLE_ALIAS" => "C",
"FIELD_NAME" => "C.NAME",
"FIELD_TYPE" => "string",
"JOIN" => "",
),
"REGION_NAME" => array(
"TABLE_ALIAS" => "R",
"FIELD_NAME" => "R.REGION",
"FIELD_TYPE" => "string",
"JOIN" => "",
),
));
$strSql = "
SELECT
R.COUNTRY_ID
,C.SHORT_NAME COUNTRY_SHORT_NAME
,C.NAME COUNTRY_NAME
,R.REGION REGION_NAME
FROM
b_stat_city R
INNER JOIN b_stat_country C on C.ID = R.COUNTRY_ID
";
$strQueryWhere = $obQueryWhere->GetQuery($arFilter);
if($strQueryWhere <> '')
{
$strSql .= "
WHERE
".$strQueryWhere."
";
}
$strSql .= "
GROUP BY
R.COUNTRY_ID, R.REGION, C.SHORT_NAME, C.NAME
";
if(count($arQueryOrder) > 0)
{
$strSql .= "
ORDER BY
".implode(", ", $arQueryOrder)."
";
}
return $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
}