Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
ВнизUpdate Найти похожие ветки
← →
User_OKA (2007-02-21 09:36) [0]Как написать запрос по обновлению одной БД, по ключевому полю из другой базы данных?
← →
Desdechado © (2007-02-21 11:13) [1]Что есть "ключевое поле базы данных"?
Опиши на пальцах процесс.
← →
Gin2 (2007-02-21 11:43) [2]телепатируем: база данных=таблица, ключевое поле=ПК.
update Table
set Field2 = "bla-bla"
where id = 200
← →
User_OKA (2007-02-21 11:52) [3]есть таблица1: поля ..., strana, newsrana
таблица2: поля strana, kod, newstrana
Нужно обновить поле newstrana в таблица1
по ключевому полю strana, значение newstrana таблица2
← →
stone © (2007-02-21 11:59) [4]
> User_OKA (21.02.07 11:52) [3]
см. LocalSQL.hlp по ключевому слову Update
← →
User_OKA (2007-02-21 12:46) [5]а чем мне поможет LocalSQL.hlp
синтаксис команды UPDATE я знаю
такой запрос:
UPDATE Имя_Первой_Таблицы SET newstrana=SELECT newstrana FROM Имя_Второй_Таблицы Where (Имя_Первой_Таблицы.strana=Имя_Второй_Таблицы.strana)
отрабатывает неправильно.
поле strana в таблице1 пустое, в таблице2 его нет
он все равно заполняет значение newstrana
← →
Desdechado © (2007-02-21 13:06) [6]> Нужно обновить поле newstrana в таблица1
> поле strana в таблице1 пустое, в таблице2 его нет
Какое-то противоречие, не находишь?
Может, нужно не обновить, а дополнить справочник?
← →
User_OKA (2007-02-21 13:18) [7]поле strana в таблице1 пустое, в таблице2 его нет
это частный случай.
в основном поле strana в таблице1 заполненно и таблице2 есть соответствие
вот такой запрос работает,
update "C:\Rex06\SVA\Valera.DBF" A
set A.Strana=(select B.Strana, count(B.Strana)
from "C:\Rex06\SVA\CountriesWorld.DBF" B
where (A.Russ=B.Russ)
group by B.Strana
having count(B.Strana) > 0)
where A.kol > 0
но вылетает посередине.
я так думаю памяти не хватает.
← →
Desdechado © (2007-02-21 13:29) [8]> но вылетает посередине.я так думаю памяти не хватает.
А текст ошибки думать помогает?
← →
stone © (2007-02-21 13:35) [9]
> A.Strana=(select B.Strana, count(B.Strana)
> from "C:\Rex06\SVA\CountriesWorld.DBF" B
> where (A.Russ=B.Russ)
> group by B.Strana
> having count(B.Strana) > 0)
Это как? какое по твоему значение поля из подзапроса должно присвоиться?
← →
User_OKA (2007-02-21 13:50) [10]> stone
Можно так все равно вылетает с ошибкой, где-то в середине базы:
update "C:\Rex06\SVA\Valera.DBF" A
set A.Strana=(select B.Strana from "C:\Rex06\SVA\CountriesWorld.DBF" B where (A.Russ=B.Russ))
where ((select count(B.Strana) from "C:\Rex06\SVA\CountriesWorld.DBF" B where(B.Russ=A.Russ)) > 0) and
(A.kol > 0)
← →
Desdechado © (2007-02-21 14:04) [11]Еще раз:
А текст ошибки думать помогает?
← →
User_OKA (2007-02-21 14:13) [12]В первом случае:
update "C:\Rex06\SVA\Valera.DBF" A
set A.Strana=(select B.Strana, count(B.Strana)
from "C:\Rex06\SVA\CountriesWorld.DBF" B
where (A.Russ=B.Russ)
group by B.Strana
having count(B.Strana) > 0)
where A.kol > 0
ошибка:
Operation not applicable.
File or directory does not exist.
File: C:\Program Files\Borland\Delphi5\Bin\_QSQL000.DBF
обработано около 2200 записей
Во втором случае:
update "C:\Rex06\SVA\Valera.DBF" A
set A.Strana=(select B.Strana from "C:\Rex06\SVA\CountriesWorld.DBF" B where (A.Russ=B.Russ))
where ((select count(B.Strana) from "C:\Rex06\SVA\CountriesWorld.DBF" B where(B.Russ=A.Russ)) > 0) and
(A.kol > 0)
отрабатывает без ошибки, но в базе из 10000 записей, обработанно около 2200 записей
← →
stone © (2007-02-21 14:19) [13]
> отрабатывает без ошибки, но в базе из 10000 записей, обработанно
> около 2200 записей
у тебя набор данных ограничен условиями, не так ли?
> A.Strana=(select B.Strana from "C:\Rex06\SVA\CountriesWorld.
> DBF" B where (A.Russ=B.Russ))
> where ((select count(B.Strana) from "C:\Rex06\SVA\CountriesWorld.
> DBF" B where(B.Russ=A.Russ)) > 0) and
> (A.kol > 0)
И все таки учи SQL, так писать нельзя :)
← →
User_OKA (2007-02-21 14:26) [14]> stone
напиши правильно
условия я сказал
← →
ЮЮ © (2007-02-22 07:43) [15]
> User_OKA (21.02.07 11:52) [3]
> есть таблица1: поля ..., strana, newsrana
> таблица2: поля strana, kod, newstrana
>
> Нужно обновить поле newstrana в таблица1
> по ключевому полю strana, значение newstrana таблица2
where (A.Russ=B.Russ)
В [3] не было никакких Russ. Почему сязь серез них, если "в основном поле strana в таблице1 заполненно и таблице2 есть соответствие"
синтаксис команды UPDATE я знаю
такой запрос:
UPDATE Имя_Первой_Таблицы SET newstrana=SELECT newstrana FROM Имя_Второй_Таблицы Where (Имя_Первой_Таблицы.strana=Имя_Второй_Таблицы.strana)
отрабатывает неправильно.
поле strana в таблице1 пустое, в таблице2 его нет
он все равно заполняет значение newstrana
Неверю. Более того, твой запрос проитиворечит синтаксису SQL, ибо подзапрос может вернуть несколько записей, а ты присваиваешь полю. Правда, возможно, ошибка сказывается только в RunTime, хотя сомнительно.
З.Ы. Может слегка нормализовать БД и избавиться от необходимости лишних телодвижений?
З.Ы. Структура позволяет при одном и том же значении поля strana в таблица2
иметь совершенно разные значения newstrana. Какое из них ты хочешь увидеть в таблица1.newstrana ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c