Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   SQL 2005 Помогите выполнить UpDate (http://forum.oszone.net/showthread.php?t=179195)

konstantin80 26-06-2010 11:41 1442032

SQL 2005 Помогите выполнить UpDate
 
Есть две таблицы Т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 1442182

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

Цитата:

Цитата konstantin80
База рабочая »

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

konstantin80 28-06-2010 09:04 1443023

пробовал вот так

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 1443265

Цитата:

Цитата konstantin80
from history as history_1, packets as packets_1 »

AS - Лишний оператор. он применяет только при назначении синонимов полям. Пиши просто
Код:

from history  history_1, packets  packets_1
Цитата:

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

Да, псевдонимы. Приведенный мною код точно работает на SQL сервере

Цитата:

Цитата konstantin80
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 применяй псевдонимы. Либо не используй их вообще, они нужны только для сокращения записи )


Время: 16:49.

Время: 16:49.
© OSzone.net 2001-