Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Никак....


Наверх

Титульная страница Поиск, карта сайта Написать письмо