- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/database/helper/mysql.php
- Класс: BitrixTasksInternalsDataBaseHelper
- Вызов: Helper::mergeTables
static function mergeTables($toTable, $fromTable, $fldMap, $fldCondition)
{
$dbConnection = MainHttpApplication::getConnection();
$dbHelper = $dbConnection->getSqlHelper();
$toTable = $dbHelper->forSql(trim($toTable));
$fromTable = $dbHelper->forSql(trim($fromTable));
if(!mb_strlen($toTable) || !mb_strlen($toTable) || !is_array($fldMap) || empty($fldMap) || empty($fldCondition))
return false;
// update tab1, tab2 set tab1.aa = tab2.bb, tab1.cc = tab2.dd where tab1.ee = tab2.ff
$sql = 'update '.$toTable.', '.$fromTable.' set ';
$fields = array();
foreach($fldMap as $toFld => $fromFld)
$fields[] = $toTable.'.'.$dbHelper->forSql(trim($toFld)).' = '.$fromTable.'.'.$dbHelper->forSql(trim($fromFld));
$sql .= implode(', ', $fields);
$where = array();
foreach($fldCondition as $left => $right)
$where[] = $toTable.'.'.$dbHelper->forSql(trim($left)).' = '.$fromTable.'.'.$dbHelper->forSql(trim($right));
$sql .= ' where '.implode(' and ', $where);
$dbConnection->query($sql);
return true;
}