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

Вниз

SQL запрос.   Найти похожие ветки 

 
denick   (2003-08-20 12:32) [0]

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

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


 
Digitman ©   (2003-08-20 12:44) [1]

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


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

Не понял?!


 
gsvserg ©   (2003-08-20 12:55) [3]

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


 
Digitman ©   (2003-08-20 12:58) [4]

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

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

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

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


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

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


 
Zacho ©   (2003-08-20 13:26) [6]


> denick (20.08.03 13:15) [5]

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


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


> denick


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


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

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


 
Zacho ©   (2003-08-20 13:35) [9]


> denick (20.08.03 13:34) [8]

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


 
Digitman ©   (2003-08-20 13:45) [10]


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


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

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


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

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


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

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


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

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

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


 
Digitman ©   (2003-08-20 14:18) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2003.09.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
9-33422
Kobik
2003-03-02 11:41
2003.09.11
Палитра в DirectDraw


1-33669
Михаил. Т
2003-08-29 16:16
2003.09.11
TAction


1-33610
Qwerr
2003-09-01 12:48
2003.09.11
Проблема с текстовым полем (String)


6-33720
vajo
2003-07-02 14:42
2003.09.11
Приём параметров в консольном приложении


14-33737
Мазут Береговой
2003-08-23 11:18
2003.09.11
***