Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1171727368
hhjjkk
2007-02-17 18:49
2007.03.18
Как ПОЛНОСТЬЮ удалить 1С с компа?


15-1171741571
lookin
2007-02-17 22:46
2007.03.18
Приветствую


2-1172485149
Oleg_teacher
2007-02-26 13:19
2007.03.18
Прокрутка Stringgrid


6-1159949661
Nickla
2006-10-04 12:14
2007.03.18
VPN соединение в DELPHI


1-1169658454
Ламерюга
2007-01-24 20:07
2007.03.18
Можно ли получить TForm из Handle





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