Показать сообщение отдельно
  #6  
Старый 14.01.2011, 06:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Проблема в том, что для Update, твой подзапрос должен вернуть всего одну строчку, а у тебя, похоже, коды повторяются (a1 и b1).

Теперь о задаче.
Вариант 1. Если это разрвая операция, то лучше просто удалить данные о 6 станции из первой таблицы и скопировать туда данные из второй.
Код:
begin

delete from table1 where a1 = 6;
insert into table1 (a1, b1, c1) values (select a1, b1, c1 from table2 where a1 = 6);

commit;

Вариант 2. Если это постоянная проблема, то:
а) решаем ее как и в в.1, но только делаем процку, которую периодически и запускаем.
б) делаем view так, что в нее попадают данные для всх станций кроме 6 из первой таблицы и данные из второй таблицы, но только о 6ой станции:
Код:
create view table_view as
select a1, b1, c1 from table1 where a1 <> 6
union all
select a1, b1, c1 from table2 where a1 = 6;
Если ты собираешься делать обновление через эту view, то тебе еще придется создать триггера на insert, update и delete. что бы объяснить БД с какой из таблиц ты будешь работать.
Ответить с цитированием