Войти

Показать полную графическую версию : SQL 2005 Помогите выполнить UpDate


konstantin80
26-06-2010, 11:41
Есть две таблицы Т1 и Т2 , в обоих имеются поля ID_1, ID_2, ID_3. Значения первых двух полей одинаковые, в ID_3 есть расхождения. Надо заменить Т1.ID_3 на T2.ID_3 при условии, что T1.ID_1 = T2.ID_1 и T1.ID_2 = T2.ID_2 а T1.ID_3<>T2.ID_3
База рабочая

Delirium
26-06-2010, 17:34
UPDATE T1
SET t1.ID_3 = t2.ID_3
FROM T1 t1, T2 t2
WHERE t1.ID_1 = t2.ID_1 and t1.ID_2 = t2.ID_2 and t1.ID_3<>t2.ID_3

База рабочая »
Сделайте выгрузку двух таблиц в тот же Access и тестируйте.

konstantin80
28-06-2010, 09:04
пробовал вот так

UPDATE history
SET history_1.id_razdel = packets_1.id_razdel
from history as history_1, packets as packets_1
WHERE month(history.date_beg)=3 and day(history.date_beg)=10
And (history.id_key) = (packets.id_key)
And (history.id_operator)=(packets.id_operator_b)
And (history.id_razdel)<>(packets.id_razdel)

где history = T1, packets = T2, ID_1 = ID_key, ID_2 = ID_operator ID_3 = ID_razdel
в access проходит на Ура, а в SQL пишет,

"Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "history.date_beg".
Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "history.date_beg".
Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "history.id_key".
Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "packets.id_key".
Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "history.id_operator".
Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "packets.id_operator_b".
Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "history.id_razdel".
Сообщение 4104, уровень 16, состояние 1, строка 2
Не удалось привязать составной идентификатор "packets.id_razdel".
"
Где моя ошибка???

что такое t1, t2? Псевдонимы?

Delirium
28-06-2010, 17:26
from history as history_1, packets as packets_1 »
AS - Лишний оператор. он применяет только при назначении синонимов полям. Пиши просто
from history history_1, packets packets_1
что такое t1, t2? Псевдонимы? »
Да, псевдонимы. Приведенный мною код точно работает на SQL сервере

UPDATE history
SET history_1.id_razdel = packets_1.id_razdel
from history as history_1, packets as packets_1
WHERE month(history.date_beg)=3 and day(history.date_beg)=10
And (history.id_key) = (packets.id_key)
And (history.id_operator)=(packets.id_operator_b)
And (history.id_razdel)<>(packets.id_razdel) »
Если уж используются псевдонимы history_1 и packets_1, то и в условиях WHERE применяй псевдонимы. Либо не используй их вообще, они нужны только для сокращения записи )




© OSzone.net 2001-2012