Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
14-33805
jack128
2003-08-22 00:05
2003.09.11
Именинники 22 августа


1-33543
Guzz
2003-08-28 20:23
2003.09.11
DBGrid


4-33841
Павел
2003-07-12 21:35
2003.09.11
Курсор над приложением


1-33649
_MAD_
2003-08-30 16:59
2003.09.11
TCheckBox


14-33813
Карелин Артем
2003-08-22 11:21
2003.09.11
Конференция Основная




   Наверх