Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с UPDATE / 3 сообщений из 3, страница 1 из 1
10.10.2007, 12:14
    #34859729
Vector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с UPDATE
Приветствую всех!

Есть две таблицы Table1 и Table2.
Связаны они по двум полям: RegCode и OffCode, соотношением мастер детайл.
В первой хранятся дневные показатели, в ней же есть дата.
Во второй реализация.

Мне надо обновить данные во второй таблице в тех записях, которые находятся в
определенном диапазоне дат.

Не знаю, как записать запрос.
Если бы связь была по одному полю (ну скажем, по Code), то можно было бы записать так:
Код: plaintext
1.
UPDATE Table2 SET a= 5 , b= 6 
WHERE Code IN (SELECT Code FROM Table1 WHERE Dat>='2007-01-01' AND Dat<='2007-02-28')
Но таблицы связаны по двум полям!!!
Как такой запрос должен выглядеть?

Код: plaintext
1.
2.
3.
???
UPDATE Table2 SET a= 5 , b= 6 
WHERE RegCode and OffCode IN (SELECT RegCode, OffCode FROM Table1 WHERE Dat>='2007-01-01' AND Dat<='2007-02-28')
???

С уважением Vector
...
Рейтинг: 0 / 0
10.10.2007, 12:36
    #34859824
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с UPDATE
Vector
Код: plaintext
1.
2.
3.
???
UPDATE Table2 SET a= 5 , b= 6 
WHERE RegCode and OffCode IN (SELECT RegCode, OffCode FROM Table1 WHERE Dat>='2007-01-01' AND Dat<='2007-02-28')
???

Код: plaintext
1.
2.
3.
4.
5.
???
UPDATE Table2 SET a= 5 , b= 6 
WHERE 
 (RegCode, OffCode) IN 
(SELECT RegCode, OffCode FROM Table1 WHERE Dat>='2007-01-01' AND Dat<='2007-02-28')
???
Оно ???


Как вариант - переписать запрос на вариант с EXISTS:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
???
UPDATE Table2 SET a= 5 , b= 6 
WHERE 
 exists (SELECT null 
FROM Table1 WHERE Dat>='2007-01-01' AND Dat<='2007-02-28'
and Table1.RegCode = Table2.RegCode 
and Table1.OffCode = Table2.OffCode
)
???
...
Рейтинг: 0 / 0
10.10.2007, 13:15
    #34859997
Vector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с UPDATE
Спасибо. Действительно так работает:

Код: plaintext
1.
2.
3.
UPDATE Table2 SET a= 5 , b= 6 
WHERE 
 (RegCode, OffCode) IN 
(SELECT RegCode, OffCode FROM Table1 WHERE Dat>='2007-01-01' AND Dat<='2007-02-28')
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с UPDATE / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]