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

Вниз

UPDATE ... SELECT...   Найти похожие ветки 

 
Silver_   (2003-06-04 11:52) [0]

Нужно реализовать следующее, изменить запись в Table1 из таблицы Table2. Поля ВЕРНЫЕ
а выдается ошибка неверный синтаксис UPDATE. Да если чесно и мне кажется не совсем правельно (ощущение такое).

INSERT INTO Table1 (Fld1, Fld2)
SELECT Fld1, Fld2 FROM Table2 t2
WHERE t2.Fld1 = ...

Делаю так
UPDATE Table1 t1 SET (Fld1, Fld2)
SELECT Fld1, Fld2 FROM Table2 t2
WHERE t2.Fld1 = ...
WHERE t1.fld2 = ...

А как правельно???


 
stone   (2003-06-04 11:59) [1]

В разделе о БД неплохо бы указывать тип СУБД, так как разный диалект SQL.
А так как делаешь ты - однозначно не правильно.


 
Sandman25   (2003-06-04 12:07) [2]

SET (Fld1, Fld2) =
(( SELECT Fld1, Fld2 FROM Table2 t2
WHERE t2.Fld1 = ...
WHERE t1.fld2 = ...
))


 
Silver_   (2003-06-04 12:19) [3]

Вот так получилось
UPDATE Table1 t1, Table2 t2
SET t1.Fld1 = t2.Fld1,
t1.Fld2 = t2.Fld2
WHERE t2.Fld1 = ...) AND (t1.Fld2 = ...)

Хотя попробую и

> Sandman25 © (04.06.03 12:07)

правда вот так :о)
UPDATE Table1
SET (Fld1, Fld2) =
(( SELECT Fld1, Fld2 FROM Table2 t2
WHERE t2.Fld1 = ... ))
WHERE t1.fld2 = ...


> В разделе о БД неплохо бы указывать тип СУБД, так как разный
> диалект SQL.

Да забыл, хотя в этом случае думаю не проблема

Спасибо


 
Silver_   (2003-06-04 12:30) [4]


> Sandman25 © (04.06.03 12:07)
>
> SET (Fld1, Fld2) =
> (( SELECT Fld1, Fld2 FROM Table2 t2
> WHERE t2.Fld1 = ...
> WHERE t1.fld2 = ...
))


Не работает хотя может быть потому что у меня Access


 
Sandman25   (2003-06-04 12:31) [5]

Наверное. У меня ж Informix


 
Johnmen   (2003-06-04 12:51) [6]

Базовые конструкции языка SQL едины и не зависят от типа СУБД.
В данном случае синтаксис UPDATE Table SET F1=..., F2=..., ... WHERE ...


 
Sandman25   (2003-06-04 14:13) [7]

Johnmen © (04.06.03 12:51)

Это верно, но в стандарте SQL произойдет потеря эффективности из-за вычисления одинаковых запросов несколько раз. IMHO


 
Johnmen   (2003-06-04 14:26) [8]

>вычисления одинаковых запросов несколько раз.

Не понял...:)


 
Sandman25   (2003-06-04 14:49) [9]

Посмотрите исходный UPDATE.

UPDATE Table1 t1 SET (Fld1, Fld2)
SELECT Fld1, Fld2 FROM Table2 t2
WHERE t2.Fld1 = ...
WHERE t1.fld2 = ...

Придется его записать как

UPDATE Table1 t1 SET Fld1 =
(SELECT t2.Fld1 FROM Table2 t2
WHERE t2.Fld1 = ...),
Fld1 =
(SELECT t2.Fld2 FROM Table2 t2
WHERE t2.Fld1 = ...)
WHERE t1.fld2 = ...

Стало 2 вложенных селекта вместо 1, а ведь они связываются одинаково.



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

Форум: "Базы";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-97548
_Andrew_
2003-06-07 02:05
2003.06.30
Ускорение поиска


1-97586
Reanimator
2003-06-18 22:20
2003.06.30
Или глюк с TShellTreeView или я чегото не понимаю.


14-97814
Sergey13
2003-06-11 08:52
2003.06.30
Вопрос к женатым и с детьми.


11-97576
програмист
2002-10-15 13:54
2003.06.30
нашел работу


7-97908
aTeRm
2003-04-19 13:25
2003.06.30
Установка шрифтов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский