Цитата:
Сообщение от lmikle
Проблема в том, что для 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ой станции:
|
Вообще, комбинации a1 и b1 не повторяются. Но даже если повторяются, что плохого? Значит, во все строки первой таблицы, где встречается сочетание a1-b1 вставлять одно и тоже значение с1. (Во второй таблице точно повторяющихся сочетаний нет).
Вариант с удалением не подходит, т.к. в первой таблице помимо этих трёх полей содержится ещё огромное количество других... Просто так оказалось, что кусок одного из этих полей не заполнен, и его можно заполнить, взяв данные из другой таблицы.
Делать новую таблицу и в неё перемещать данные из обеих таблиц проблематично, т.к. получается, что нужно для части записей перенести данные полностью из первой таблицы, а для части (например, с 201ой по 301ую) - все, кроме этого поля, из первой, а это поле из второй.
Кроме того, проблемно будет восстанавливать ключи и связи к этой таблице. Да и из старой удалить записи невозможно, т.к. на них ссылаются другие таблицы.
Неужели никак нельзя просто вставить записи в этот столбец по определённому условию?...
Ну может циклом..