Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом, пожалуйста!  [new]
Jupiter74
Member

Откуда:
Сообщений: 186
В общем ситуация такая: Есть таблица из нескольких полей + ключевое поле (автоинкремент, ключ)
Идет импорт из текстового файла.
По 4 полям я могу точно определить строку
Задача - добавить все записи, которых в базе еще нет.
Всегда делал в 2 действия:
1. select по условиям 4 полям (select поле1, поле2, поле3, поле4 from таблица where поле1=параметр1 and поле2=параметр2 and поле3=параметр3 and поле3=параметр3)
2. Если записи нет, тогда отрабатывает insert, иначе update.
У меня используется 3 запроса (select, insert, update). Насколько понимаю, все это можно сделать в одном запросе. Правда пока не смог его написать. С чем сейчас запутался - не знаю как правильно в запросе проверить количество записей в select
23 май 13, 21:35    [14341127]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом, пожалуйста!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74928
Из текстового файла импорт в промежуточную таблицу. Затем MERGE промежуточной с основной.
23 май 13, 21:48    [14341195]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом, пожалуйста!  [new]
Jupiter74
Member

Откуда:
Сообщений: 186
Интересная идея... как-то в голову не пришла. Давненько с базами не работал... Поковыряю в этом направлении. Только логику додумать. Потому как каждая строка из файла пишется в 2 таблицы - главную и подчиненную. По первым 4 полям ищется (создается) запись в главной таблице, получаем id с главной, потом по аналогичным правилам обновляются (или добавляются) данные в подчиненную таблицу. Подумаю... Возможно, что действительно так будет проще и быстрее - все сделаю в одной таблице, хоть это и неправильно...
23 май 13, 21:58    [14341245]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом, пожалуйста!  [new]
Jupiter74
Member

Откуда:
Сообщений: 186
pkarklin,

Не подскажешь, где об этом почитать поподробнее?
23 май 13, 22:00    [14341256]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом, пожалуйста!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74928
Jupiter74,

Inserting, Updating, and Deleting Data by Using MERGE

автор
Только логику додумать. Потому как каждая строка из файла пишется в 2 таблицы - главную и подчиненную. По первым 4 полям ищется (создается) запись в главной таблице, получаем id с главной, потом по аналогичным правилам обновляются (или добавляются) данные в подчиненную таблицу


В два запроса. Первый с кляузой OUTPUT в табличную переменную\временную таблицу. Второй MERGE.
23 май 13, 22:07    [14341293]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить