Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
4 / 4 / 0
Регистрация: 19.03.2011
Сообщений: 311

Добавление строки-дубля в таблицу

02.03.2015, 21:57. Показов 2341. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо заполнить таблицу в БД1 информацией из из другой таблицы в БД2 (структура таблиц разная), поэтому очищаю первую таблицу, а затем используя Insert заполняю ее данными из второй таблицы. Но проблема в том что в таблице из бд2 может добавится только пару записей и из за них приходится удалять 1000 и потом опять добавлять 1002. Как оптимально добавлять данные в таблицу?? (например если в таблице уже есть добавляемая строка, то ничего не делаем, если нет добавляем)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2015, 21:57
Ответы с готовыми решениями:

Добавление строки в таблицу
Привет. на форме есть кнопка и QTableWidget создал коннект connect(ui->pushButton, SIGNAL(clicked()), ui->tableWidget,...

Добавление строки в таблицу
Некорекктно работает добавление строк в таблицу, вот мой код: http://jsfiddle.net/Aa2ek/269/ Не знаю как правильно работать с append.

Добавление строки в таблицу
Добрый день,нужно добавить новую строку в таблицу..работаю с аксесом.. клавиши навигации не катят..!

11
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
03.03.2015, 09:38
просто сделай поле-идентификатор в БД1 и БД2 одинаковым, и при вставке проверяй, есть ли такое значение в БД2. при этом очищать таблицу совсем не обязательно.
0
4 / 4 / 0
Регистрация: 19.03.2011
Сообщений: 311
03.03.2015, 09:42  [ТС]
Цитата Сообщение от texnix Посмотреть сообщение
просто сделай поле-идентификатор в БД1 и БД2 одинаковым, и при вставке проверяй, есть ли такое значение в БД2. при этом очищать таблицу совсем не обязательно.
структуру одной таблицы (в БД1) я не могу менять и как можно проверить? есть какой нибудь оператор?
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
03.03.2015, 10:11
fromdd, давай так, ты сюда скопируешь весь твой реальный запрос на insert, а я уже скажу конкретно.
0
4 / 4 / 0
Регистрация: 19.03.2011
Сообщений: 311
03.03.2015, 10:37  [ТС]
Цитата Сообщение от texnix Посмотреть сообщение
fromdd, давай так, ты сюда скопируешь весь твой реальный запрос на insert, а я уже скажу конкретно.
таблица1 из бд1 в которую необходимо добавить
OID|name|format
oid ключевое, не Null, varchar

таблица2 из бд2 которой извлекаю данные для вставки
KOD|level|scname|socrname

Работаю через С# , извлекаю из таблицы2 данные интересующего меня уровня
C#
1
CmdSource.CommandText = "select distinct SCNAME, SOCRNAME from as_socrbase where level in (1, 3, 4, 5)";
затем в цикле через параметры запихиваю это в первую таблицу
C#
1
CmdDest.CommandText = "insert into table1 values(@OID, @Name, @Format)";
oid формирую в цикле
C#
1
2
PostFixOID++;
                CmdDest.Parameters["@OID"].Value = (PrefixOID + String.Format("{0,9:X}", PostFixOID)).Replace(' ', '0');
те вид trt000000001 и тд
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
03.03.2015, 11:04
fromdd, ну вот, тебе достаточно извлекать ещё и KOD из 2й таблицы, а затем OID формировать на основании кода, например (PrefixOID+KOD)
и при следующей вставке, ты всегда можешь узнать, есть ли или нет такая запись, с данным Кодом в таблице 1.
Тебя же никто не заставляет OID делать обязательно с 1?
0
4 / 4 / 0
Регистрация: 19.03.2011
Сообщений: 311
03.03.2015, 11:16  [ТС]
Цитата Сообщение от texnix Посмотреть сообщение
fromdd, ну вот, тебе достаточно извлекать ещё и KOD из 2й таблицы, а затем OID формировать на основании кода, например (PrefixOID+KOD)
и при следующей вставке, ты всегда можешь узнать, есть ли или нет такая запись, с данным Кодом в таблице 1.
Тебя же никто не заставляет OID делать обязательно с 1?
так нельзя, он должен быть указанного вида trt и цифры

ps допустим если возможен ваш способ, то как делать проверку? можете на примере показать?
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
03.03.2015, 12:17
fromdd, пример:
C#
1
2
3
4
CmdDest.CommandText = "insert into table1 values(@OID, @Name, @Format) 
where OID <> (select top 1 OID from table1 where OID=@PostOID)"
 
CmdDest.Parameters["@PostOID"].Value = (PrefixOID + KOD)
Примерно так, си шарп не знаю, так что конвертируйте КОД в текст сами, и добавляйте нули спереди, если важно количество символов в trt000000001

можно использовать Merge, но это подлиннее будет, я обычно такой конструкцией обхожусь.
0
4 / 4 / 0
Регистрация: 19.03.2011
Сообщений: 311
03.03.2015, 13:17  [ТС]
Цитата Сообщение от texnix Посмотреть сообщение
fromdd, пример:
Код C#
1
2
3
4
CmdDest.CommandText = "insert into table1 values(@OID, @Name, @Format)
where OID <> (select top 1 OID from table1 where OID=@PostOID)"
CmdDest.Parameters["@PostOID"].Value = (PrefixOID + KOD)
Примерно так, си шарп не знаю, так что конвертируйте КОД в текст сами, и добавляйте нули спереди, если важно количество символов в trt000000001
можно использовать Merge, но это подлиннее будет, я обычно такой конструкцией обхожусь.
C#
1
2
3
4
CmdDest.CommandText = @"insert into AddrProvince 
                                    select @OID, @CountryID, @ProvinceKindID, @Name, @Okato, @Code
                                    where not exists (select OID from AddrProvince where CountryID=@CountryID
                                    and ProvinceKindID=@ProvinceKindID and Name=@Name and Code=@Code)";
как я понимаю такая конструкция аналогична вашей? просто первый раз вижу select с insert вместе в такой конструкции
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
03.03.2015, 14:22
fromdd, совсем не аналогична, я же проверял только по одному уникальному идентификатору, а вы проверяете по всем полям

Добавлено через 6 минут
и работать ваша конструкция не будет, проверил у себя.
0
4 / 4 / 0
Регистрация: 19.03.2011
Сообщений: 311
03.03.2015, 14:34  [ТС]
Цитата Сообщение от texnix Посмотреть сообщение
и работать ваша конструкция не будет, проверил у себя.
почему не будет??
если подзапрос вернет возвращает строки, то insert не выполнится, те такая строка в таблице есть, если подзапрос ничего не возвращает - срабатывает insert
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
03.03.2015, 14:56
ну вообще да, будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2015, 14:56
Помогаю со студенческими работами здесь

Добавление строки в таблицу
народ извените за ламерский вопрос есть таблица reg и еть форма после заполнения формы нажимаю кнопку и надо чтобы данные из формы...

Добавление строки таблицу БД
Привет! Есть пример из msdn о том как добавить данные в таблицу БД http://msdn.microsoft.com/ru-ru/library/5ycd1034.aspx Но если...

Добавление строки в таблицу
Доброго времени суток! Никак не могу разобраться с добавлением строки в таблицу, имеется база MSSQL , в таблице всего 2 поля ID и NAME ,...

Добавление строки в таблицу access
Привет, подскажите пожалуйста как решить данную задачу: Есть таблица, например ее имя &quot;Товар&quot; ее содержимое выводится в DBGrid....

Добавление строки в таблицу с перезаписью
Здравствуйте, необходима ваша помощь. Такая задача. Имеется таблица с полями, например &quot;Название товара&quot; и &quot;Кол-во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru