Пример MERGE в MSSQL T-SQL

Простой пример MERGE для TSQL.

В примере подразумевается, что мы оперируем двумя одинаковыми по структуре таблицами (в реальной жизни это условие вовсе не обязательно).
Таблицы TargetTableи SourceTable — состоят всего из двух полей:
Id — некий идентификатор.
Name — Название объекта.

В примере ниже мы проверяем для всех записей из SourceTable — существует ли в таблице TargetTable запись с аналогичным Id и если существует, то меняем для этой записи поле Name в TargetTable, а если не существует то добавляем запись в TargetTable из SourceTable целиком.


MERGE TargetTable AS target  -- таблица которую будем менять, таблица приемник

USING (SELECT Id, Name FROM SourceTable) AS source 

ON (target.Id = source.Id)  -- условие по которому сопоставляем источник и приемник

WHEN MATCHED AND target.Name!=source.Name -- Если такой уже есть, то проверяем не совпадает ли Name и если не совпадает то меняем

    THEN UPDATE SET target.Name = source.Name -- обновляем

WHEN NOT MATCHED  -- если такого Id нет в таблице target то добавляем

    THEN INSERT VALUES(source.Id, source.Name) -- добавление записи



Вот и всё.

Подробнее

Динамический вывод картинок в отчётах Crystal Report на C#

В данной публикации я расскажу каким образом в отчёт Crystal Report можно вывести требуемое количество изображений (например из базы данных).

!!! Для того чтобы публикация была понятна, рекомендуется к обязательному прочтению предыдущая статья Используем Crystal Report в C#.

Собственно, перепробовав много методов (в основном описанных на зарубежных сайтах — в Ру-нете как то не особо изучен этот вопрос), нашёл действительно работоспособный и эффективный метод вывода изображений в отчёт Crystal Report, который заключается в передаче изображений в отчёт через источник данных.

Подробнее

MySQL перебор значений без перебора (одним скриптом).

Здесь я приведу некоторые примеры полезных запросов в MySQL которые, как я думаю, многим могут пригодиться. Во всяком случае, когда я искал такую информацию, я так и не смог найти ничего дельного. Поэтому дошёл своим умом помаленьку. Данные запросы помогут сэкономить время и не писать процедуры для обработки данных, которые работают в разы медленнее, или помогут сделать эти процедуры значительно быстрее. Запросы показывают как в MySQL можно делать изменение записей в таблице, с перебором по всем необходимым значениям и с проверкой необходимых условий но без всяких переборов, только средствами MySQL одним запросом.

Итак приступим:

Вставка в таблицу данных из выборки:

insert into `Table1` (`Field1`,`Field2`) 
select `Table2`.`Field1`, `Table2`.`Field2` 
from `Table2` where `Field1`=0
---
Подробнее

Oracle - Фичи и полезности

Полезные мелочи и запросы, которые могут пригодиться с их описанием.

1. Получаем список всех полей интересующей нас таблицы.

select  column_name 
  from user_tab_columns 
  where upper(table_name) = upper('название_таблицы')


2. Меняем формат даты по умолчанию в сессии.

alter session set NLS_DATE_FORMAT = 'dd.mm.yyyy hh24:mi:ss';

— Пока сессия не закрыта, будет действовать установленный таким образом формат.

Подробнее