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

Откуда:
Сообщений: 14
Добрый день!

Есть 2 БД (одна старая, другая - новая), одинаковые по структуре на одном сервере. Есть в обоих БД таблица - сотрудники со столбцами: Фамилия, Имя, Отчество, день рождения ,телефон, Фото. Так вот, из старой из старой БД перенести в новую поле фото по совпадению ФИО и дня рождения.

insert into [TableNew].[dbo].[Employee]([Picture])
select [Picture]
from [TableOld].[dbo].[Employee]
where [TableNew].[dbo].[Employee].[FirstName] = [TableOld].[dbo].[Employee].[FirstName]
    and [TableNew].[dbo].[Employee].[MiddleName] = [TableOld].[dbo].[Employee].[MiddleName]
    and [TableNew].[dbo].[Employee].[LastName] = [TableOld].[dbo].[Employee].[LastName]
    and [TableNew].[dbo].[Employee].[BirthDay] = [TableOld].[dbo].[Employee].[BirthDay]


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

Так при таком раскладе выдаёт ошибку: Не удалось привязать составной идентификатор "TableNew.dbo.Employee.MiddleName" (точнее по 3м). Что я не правильно делаю?

Сообщение было отредактировано: 20 окт 15, 13:58
20 окт 15, 13:57    [18302575]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
Значения в полях изменяются командой update.
20 окт 15, 13:59    [18302595]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
superbalbes, и еще - если вы делаете условие на равенство полей в двух таблицах, вы должны сначала эти таблицы соединить.
Читайте про JOIN.
20 окт 15, 14:08    [18302672]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20584
Minamoto
если вы делаете условие на равенство полей в двух таблицах, вы должны сначала эти таблицы соединить.
Читайте про JOIN.

В данном случае требуется полное совпадение, так что пофиг. Более того, условия во WHERE даже лучше - хотя бы потому что читабельнее.
20 окт 15, 14:34    [18302871]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Akina, Ну и как вы собираетесь применять условия на равенство, не соединив таблицы (хотя бы указав их через запятую во FROM, если уж JOIN не нравится)?
20 окт 15, 15:50    [18303476]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20584
Невозможно написАть условия с использованием полей двух таблиц, не перечислив эти таблицы в секции FROM. Значит, чтобы получился не-ошибочный синтаксически запрос, их ПРИДЁТСЯ, как Вы выразились, "указать через запятую".
Поскольку поставлена задача не просто написАть SQL-подобный текст, но и сделать его работающим, Ваш вопрос лишён смысла.
20 окт 15, 16:10    [18303573]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
superbalbes
Member

Откуда:
Сообщений: 14
Всем спасибо огромное!

Фотки перебежали в новую базу, только пришлось добавить в условие not null, иначе неизвестные значения выбирает и ругается что значение не одно.

update [TableNew].[dbo].[Employee]
set [TableNew].[dbo].[Employee].Picture =
(
select Picture
from [TableOld].[dbo].[Employee]
where [TableNew].[dbo].[Employee].[FirstName] = [TableOld].[dbo].[Employee].[FirstName]
and [TableNew].[dbo].[Employee].[MiddleName] = [TableOld].[dbo].[Employee].[MiddleName]
and [TableNew].[dbo].[Employee].[LastName] = [TableOld].[dbo].[Employee].[LastName]
and [TableNew].[dbo].[Employee].[BirthDate] = [TableOld].[dbo].[Employee].[BirthDate]
and [TableOld].[dbo].[Employee].Picture is not null
)
select [Picture]
from [TableOld].[dbo].[Employee]
20 окт 15, 16:28    [18303703]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
superbalbes
Member

Откуда:
Сообщений: 14
А подскажите пожалуйста ещё, в чём разница с квадратными скобками и без них?
20 окт 15, 16:30    [18303719]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
superbalbes,

Почитайте про экранирование символов.
20 окт 15, 16:37    [18303762]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
вот вам пример
use tempdb
go

create table dbo.t
(
  select int
, update int 
)
go

create table dbo.t2
(
  [select] int
, [update] int 
)
go
20 окт 15, 16:39    [18303778]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
o-o
Guest
Pavel1211
superbalbes,
Почитайте про экранирование символов.

не такое уж и "экранирование", особенно в вашем примере,
где с символами все хорошо, но зато идентификатор с ключевым словом совпал.
свой перевод для "закавычивания/заквадрачивания" не предложу, но в оригинале пожалуйста:
Database Identifiers

К сообщению приложен файл. Размер - 26Kb
20 окт 15, 17:21    [18303999]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
o-o,

"свой перевод для "закавычивания/заквадрачивания" не предложу" -

заквадрачивание
20 окт 15, 17:36    [18304076]     Ответить | Цитировать Сообщить модератору
 Re: Копирование значений одного поля таблицы одной БД, в другую БД  [new]
o-o
Guest
Winnipuh,

"заделимитивание" универсальнее.
delimeter меняется, слово остается
20 окт 15, 17:55    [18304167]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить