Форум: "Базы";
Текущий архив: 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