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