![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
UPDATE дной таблице по друго с использованием SQL [D5, dBase, FoxPro, Paradox]
Виталий Панасенко © (2002-06-11 08:47:00)Есть две таблицы Т1 и Т2 одинаковой структуры (ID, NAME). Как при помощи SQL ОБНОВИТЬ Т1.Name по T2.Namу, связав эти таблицы по ID ? Спасибо ...
VAleksey (2002-06-11 15:02:00) [1]
> Johnmen © (11.06.02 14:56)
ты совершенно прав. Поэтому я и не ответил на этот вопрос сразу, а только после того как ты высказался. -).
ЗЫ
Хотелось подразнить мастера. :)
Johnmen (2002-06-11 14:56:00) [2]>VAleksey © (11.06.02 14:46)
Веришь-нет, никогда не приходилось делать такие апдейты, поскольку, если вникнуть в то, что он делает, становится очевидным, что при конструировании БД были допущены существенные огрехи, в т.ч. при нормализации....
А сам запрос действительно работает...:)
VAleksey (2002-06-11 14:46:00) [3]
> Johnmen © (11.06.02 11:44)
Удивительно, что это для тебя удивительно !
Johnmen (2002-06-11 11:44:00) [4]>Fishka (11.06.02 11:26) : Удивительно...:)
Fishka (2002-06-11 11:26:00) [5]>Johnmen © (11.06.02 10:16)
Запросы такого вида были мною написаны для DBF и MSSQL.
Работоспособность проверена. Вот текст работающего запроса (для моих DBF):
update "D:\bio.dbf" a
set name = (select PNRUS from "d:\biores.dbf" b
where a.cod_f=b.obk)
where a.cod_f in (select obk from "d:\biores.dbf" c)
Johnmen (2002-06-11 10:16:00) [6]>Fishka (11.06.02 10:05)
Рекомендую сначала попробовать работоспособность приведенного примера....
И указать для какой СУБД он приведен...
Fishka (2002-06-11 10:05:00) [7]
update T1 set T1.NAME=(select T2.NAME from T2
where T1.ID=T2.ID)
where exists (select T2.ID from T2 where T1.ID=T2.ID)
Замечание. Последнее условие where exists (select T2.ID from T2 where T1.ID=T2.ID) не нужно, если для каждого T1.ID есть T2.ID. Данное условие может быть другим, например с использованием IN (select .......)
Johnmen (2002-06-11 09:56:00) [8]>Zemal © (11.06.02 09:45)
Откуда взят такой синтаксис апдейта ?
Zemal (2002-06-11 09:45:00) [9]Можно и вот так к примеру:
UPDATE T1
SET T1.name = T2.name
FROM T1 INNER JOIN T2 ON T1.id = T2.id
WHERE T1.name != T2.name AND T2.name IS NOT NULL
Если надо что разъяснить,
то обращайся на мыло:
zemal@rtsnet.ru
Johnmen (2002-06-11 09:19:00) [10]>VAleksey © (11.06.02 09:09)
А полностью попробуй напиши ... :))))))))))
VAleksey (2002-06-11 09:09:00) [11]Почему никак?
SET T1.Name=T2.Name
Where T1.Id = T2.Id
раве не так ?
Johnmen (2002-06-11 09:04:00) [12]Никак....