Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

Update с использованием двух таблиц   Найти похожие ветки 

 
WondeRu ©   (2005-10-13 11:12) [0]

Здравствуйте, уважаемые!
Cитуация:
есть таблицы:
tab1(id, name)  
tab2(newid, oldid, newname)


надо сделать так, чтоб если id=oldid, то id заменялся на newid, а name на newname.

вот мой код... но он неверен

update tab1
set id=tab2.newid, name=tab2.newname
where id=tab2.oldid


Подскажите, как написать такой запрос?


 
Seg   (2005-10-13 11:17) [1]

База какая?


 
WondeRu ©   (2005-10-13 11:19) [2]

FireBird 1.5


 
Johnmen ©   (2005-10-13 11:31) [3]

update tab1
set
tab1.id=(SELECT tab2.newid FROM tab2 WHERE tab1.id=tab2.oldid),
tab1.name=(SELECT tab2.newname FROM tab2 WHERE tab1.id=tab2.oldid)


 
WondeRu ©   (2005-10-13 11:48) [4]

Johnmen ©   (13.10.05 11:31) [3]
не получится... tab1 содержит записи, которые не должны быть обработаны (нет их соотвествий в tab2)


 
Seg   (2005-10-13 11:51) [5]

В FireBird есть триггеры?


 
Johnmen ©   (2005-10-13 11:54) [6]


> WondeRu ©   (13.10.05 11:48) [4]
> не получится... tab1 содержит записи, которые не должны
> быть обработаны (нет их соотвествий в tab2)


+
WHERE EXISTS (SELECT 0 FROM tab2 WHERE tab1.id=tab2.oldid)


 
Sergey13 ©   (2005-10-13 11:57) [7]

2 [4] WondeRu ©   (13.10.05 11:48)
Ну добавь для верности к update
where exist (SELECT 1 FROM tab2 WHERE tab1.id=tab2.oldid)


 
WondeRu ©   (2005-10-13 11:58) [8]

Johnmen ©   (13.10.05 11:54) [6]
неа:

The insert failed because a column definition includes validation constraints. validation error for column NAME, value "*** null ***".


 
WondeRu ©   (2005-10-13 12:00) [9]

Sergey13 ©   (13.10.05 11:57) [7]
аналогично...


 
Johnmen ©   (2005-10-13 12:09) [10]

>WondeRu ©   (13.10.05 11:58) [8]
>неа:

>The insert failed because a column definition includes validation constraints.
>validation error for column NAME, value "*** null ***".


Попробуй перевести с аглицкого.
И тогда м.б. поймешь, что твоя проблема в метаданных и данных таблиц...


 
WondeRu ©   (2005-10-13 13:48) [11]

Общими усилиями получили конечный вариант:
update tab1
set
tab1.name=(SELECT tab2.newname FROM tab2 WHERE tab1.id=tab2.oldid), /* ставится на 1 место, чтоб tab1.id был пока прежним */
tab1.id=(SELECT tab2.newid FROM tab2 WHERE tab1.id=tab2.oldid)
WHERE
EXISTS (SELECT 1 FROM tab2 WHERE tab1.id=tab2.oldid)


Всем спасибо!!!



Страницы: 1 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
3-1129446032
__Пупкин
2005-10-16 11:00
2005.11.27
Можно ли узнать количество таблиц у SQL сервера


9-1121621915
DR0N
2005-07-17 21:38
2005.11.27
Как посмотреть дефолтовые значения источника света в OpenGl?


2-1131365116
Wolferio
2005-11-07 15:05
2005.11.27
ShellTreeView


2-1131805947
Виталий80
2005-11-12 17:32
2005.11.27
Как сделать чтобы цифры часов менялись в реальном времени


2-1131448585
Laymer
2005-11-08 14:16
2005.11.27
Не подключается к БД Access