Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL запрос. [Access]


denick ©   (2003-08-20 12:32:00) 

Помогите пожалуйста построить SQL запрос, что-то не получается.

У меня имеется 2 таблицы, предположем L и P.
В L есть поле период(таблица L заполнена, но поле период пустое), в P тоже поле период.
Каким образом мне поле L.период обновить полем P.период?


Digitman   (2003-08-20 14:18:00) [1]

UPDATE L INNER JOIN P ON L.Индекс = P.Индекс SET L.Период = P.Период;


denick   (2003-08-20 14:10:00) [2]

Всё нормально за исключением, того что Access пишет "В операции должен использоваться обновляемый запрос". Что это значит, может кто-нибудь подскажет?
Хотя Sql запрос такой:

UPDATE Издания_рп SET Период = (
SELECT 12
FROM PUBLIC
WHERE Издания_рп.[Индекс издания] = Public.[1]
);


denick   (2003-08-20 14:01:00) [3]

Это-то, всё ясно. Только как это объяснить Access`у? Он ругается и говорит что "Слишком мало параметров. Требуется 1."


Digitman   (2003-08-20 13:45:00) [4]


> denick (20.08.03 13:34) [8]
> Есть уникальное поле индекс, где L.индекс = P.индекс


это и есть реляция

см.
> Zacho © (20.08.03 13:35) [9]


здесь ты говоришь системе

для каждой записи в таблице L установить зн-е ее поля L.период, равное тому, что будет затребовано соответствующим запросом к таблице P и вернет единственную запись с условием : значение уникального поля P.индекс равно текущему значению уник.поля L.индекс


Zacho   (2003-08-20 13:35:00) [5]


> denick (20.08.03 13:34) [8]

Тогда: UPDATE L SET период=(SELECT период FROM P WHERE L.индекс = P.индекс)


denick   (2003-08-20 13:34:00) [6]

Есть уникальное поле индекс, где L.индекс = P.индекс


Digitman   (2003-08-20 13:33:00) [7]


> denick


мало ли что оно "одинаковое" ! Ядро СУБД при разборе и исполнении SQL-запроса должно знать, как поставить соответствие между записями.


Zacho   (2003-08-20 13:26:00) [8]


> denick (20.08.03 13:15) [5]

Еще раз: из какой именно записи таблицы P брать значение поля период для каждой конкретной записи таблицы L ?
P.S. Тебе явно не хватает знания основ теории РСУБД.


denick   (2003-08-20 13:15:00) [9]

У меня в обеих таблицах одинаковое число записей. Нужно все записи таблицы P поля период, записать в поле период таблицы L.
Повторюсь, что в поле L записи есть, но поле период пустое.


Digitman   (2003-08-20 12:58:00) [10]

о боже ! дай мне терпения объяснить человеку, занявшемуся разработкой приложений реляционной БД, что такое реляция)

ну хорошо, на огурцах)

пусть L содержит 3 записи, а P - 2 записи.

вопрос тебе : из какой записи таблицы P нужно взять зн-е поля период, чтобы записать это значение в поле "период", скажем, 2-й записи таблицы L ? Правила-то хоть какие-то есть , по которым следует ставить соответствие между записями 2-х этих таблиц ?


gsvserg   (2003-08-20 12:55:00) [11]

Если таблицы связаны,то с помощью цикла по таблице Р.
В теле цикла update в таблице L


denick   (2003-08-20 12:48:00) [12]

Не понял?!


Digitman   (2003-08-20 12:44:00) [13]

а как у тебя выглядит реляция между L и P ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо