Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE из других таблиц / 12 сообщений из 12, страница 1 из 1
04.08.2005, 13:53
    #33201644
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
есть две таблицы

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE "public"."movcard" (
  "id" BIGSERIAL, 
  "mov" INTEGER, 
  "card" INTEGER, 
  "value" NUMERIC( 18 , 10 ), 
) WITHOUT OIDS;

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE "public"."vcard" (
  "id" BIGSERIAL, 
  "card" INTEGER, 
  "value" NUMERIC( 18 , 10 ), 
  "div" INTEGER, 
) WITHOUT OIDS;

хочу сделать груповой апдейт типа такого:

Код: plaintext
1.
2.
3.
4.
5.
6.
update vcard set vcard.value = vcard.value - movcard.value
from
      movcard
where
      movcard.card=vcard.card
      and movcard.mov= 247 
      and vcard.div= 1 

т.е. по заданому условию изменить колонки в соответствующих столбцах.
что не так? как правильно сделатьзапрос?
...
Рейтинг: 0 / 0
04.08.2005, 14:33
    #33201790
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
не совсем понял, что вы хотите. Но кажется что-то наподобь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
update vcard set value = vcard.value - ms.value
from  (
SELECT SUM(m.value) AS value , card , mov
FROM movcard m
GROUP BY card,mov
) AS  ms
where
      ms.card=vcard.card
      and ms.mov= 247 
      and vcard.div= 1 
...
Рейтинг: 0 / 0
04.08.2005, 15:17
    #33201935
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
таблица vcard:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
id  card value div
 39    6       5       1  
 40    8       5       1  
 41    10      20      1  
 42    11      3       1  
 43    14      10      1  
 44    15      1       1  
 45    16      2       1  
 46    13      5       1 
 47    6       4       2  
 48    8       7       2  
 49    10      3       2   
таблица movcard
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
id  mov card value 
 146   207   6      5  
 147   207   8      5  
 148   207   10     20  
 149   207   11     3  
 150   207   14     10  
 151   207   15     1  
 152   207   16     2  
 153   208   13     5  
 163   247   6      1  
 164   247   8      3  

необходимо запросом обновить строки из таблицы vcard с id = 39 и 40 причем из строки 39 у поля value отнять 1 так как в movcard есть строка 163, кторая соответствует полю card. в строке 40 таблицы vcard поле value уменьшить на 3, в соотв. с строкой 164 таблицы movcard
...
Рейтинг: 0 / 0
04.08.2005, 15:27
    #33201964
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
pushтаблица vcard:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
id  card value div
 39    6       5       1  
 40    8       5       1  
 41    10      20      1  
 42    11      3       1  
 43    14      10      1  
 44    15      1       1  
 45    16      2       1  
 46    13      5       1 
 47    6       4       2  
 48    8       7       2  
 49    10      3       2   
таблица movcard
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
id  mov card value 
 146   207   6      5  
 147   207   8      5  
 148   207   10     20  
 149   207   11     3  
 150   207   14     10  
 151   207   15     1  
 152   207   16     2  
 153   208   13     5  
 163   247   6      1  
 164   247   8      3 
 165   247   6      6  
 166   247   8      2  

а если так?
...
Рейтинг: 0 / 0
04.08.2005, 15:38
    #33201995
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
это исключено в movcard
mov и card индекс, и в паре уникальны
...
Рейтинг: 0 / 0
04.08.2005, 15:45
    #33202023
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
тогда ваш запрос почти верен. Уберите имя таблицы из левой части
... SET xxx.yyy =...
т.к. оно там лишнее.
...
Рейтинг: 0 / 0
04.08.2005, 15:49
    #33202047
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
заработало.
дело в том что в обоих полях было поле с одинаковым именем
"value"
на это дело руголось, говорил типа неоднозначно)
переименовал поле и закружилось
...
Рейтинг: 0 / 0
04.08.2005, 15:56
    #33202077
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
push..."value"...
Код: plaintext
1.
2.
3.
4.
5.
6.
update vcard set value = vcard.value - movcard.value
from
      movcard
where
      movcard.card=vcard.card
      and movcard.mov= 247 
      and vcard.div= 1 
???
...
Рейтинг: 0 / 0
04.08.2005, 15:58
    #33202086
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
я пробовал
не хочет так.
пишет типа нет такого столбца sklad (???)
...
Рейтинг: 0 / 0
04.08.2005, 16:03
    #33202107
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
столбца vcard, заработался уже
...
Рейтинг: 0 / 0
04.08.2005, 16:28
    #33202195
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
а, простите,
SELECT version();
????
...
Рейтинг: 0 / 0
04.08.2005, 16:42
    #33202246
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UPDATE из других таблиц
PostgreSQL 8.0.3 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE из других таблиц / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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