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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-97580
Maxim Pshevlotsky
2003-06-15 07:10
2003.06.30
Скорость выполнения MTS


1-97671
Emperor
2003-06-17 03:49
2003.06.30
Word документы в дельфе


3-97487
VP
2003-06-05 10:05
2003.06.30
SQL разные форматы данных


14-97830
Bboy
2003-06-12 10:25
2003.06.30
Вот бы поменять все буквы с больших на маленькие...


3-97529
japer
2003-06-05 17:12
2003.06.30
mysql koi8-r !!!