![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Update с использованием двух таблиц
WondeRu © (2005-10-13 11:12:00)Здравствуйте, уважаемые!
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
Подскажите, как написать такой запрос?
WondeRu (2005-10-13 13:48:00) [1]Общими усилиями получили конечный вариант:
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)
Всем спасибо!!!
Johnmen (2005-10-13 12:09:00) [2]>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 12:00:00) [3]Sergey13 © (13.10.05 11:57) [7]
аналогично...
WondeRu (2005-10-13 11:58:00) [4]Johnmen © (13.10.05 11:54) [6]
неа:
The insert failed because a column definition includes validation constraints. validation error for column NAME, value "*** null ***".
Sergey13 (2005-10-13 11:57:00) [5]2 [4] WondeRu © (13.10.05 11:48)
Ну добавь для верности к update
where exist (SELECT 1 FROM tab2 WHERE tab1.id=tab2.oldid)
Johnmen (2005-10-13 11:54:00) [6]
> WondeRu © (13.10.05 11:48) [4]
> не получится... tab1 содержит записи, которые не должны
> быть обработаны (нет их соотвествий в tab2)
+
WHERE EXISTS (SELECT 0 FROM tab2 WHERE tab1.id=tab2.oldid)
Seg (2005-10-13 11:51:00) [7]В FireBird есть триггеры?
WondeRu (2005-10-13 11:48:00) [8]Johnmen © (13.10.05 11:31) [3]
не получится... tab1 содержит записи, которые не должны быть обработаны (нет их соотвествий в tab2)
Johnmen (2005-10-13 11:31:00) [9]
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:19:00) [10]FireBird 1.5
Seg (2005-10-13 11:17:00) [11]База какая?