Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.014 c
9-1121200003
Turkish
2005-07-13 00:26
2005.11.27
Помогите чем сможите


2-1131373422
Makxi
2005-11-07 17:23
2005.11.27
Service Application & Delphi 6,7


14-1130476574
JohnKorsh
2005-10-28 09:16
2005.11.27
Как работать с RxTrayIcon?


14-1131441015
DelphiN!
2005-11-08 12:10
2005.11.27
Создание собственных скинов для BusinessSkinForm


3-1128610440
Weare
2005-10-06 18:54
2005.11.27
Как хранить форматированный текст в полях записи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский