powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE из других таблиц
12 сообщений из 12, страница 1 из 1
UPDATE из других таблиц
    #33201644
push
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть две таблицы

Код: 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
UPDATE из других таблиц
    #33201790
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем понял, что вы хотите. Но кажется что-то наподобь:
Код: 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
UPDATE из других таблиц
    #33201935
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.
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
UPDATE из других таблиц
    #33201964
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
UPDATE из других таблиц
    #33201995
push
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это исключено в movcard
mov и card индекс, и в паре уникальны
...
Рейтинг: 0 / 0
UPDATE из других таблиц
    #33202023
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда ваш запрос почти верен. Уберите имя таблицы из левой части
... SET xxx.yyy =...
т.к. оно там лишнее.
...
Рейтинг: 0 / 0
UPDATE из других таблиц
    #33202047
push
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заработало.
дело в том что в обоих полях было поле с одинаковым именем
"value"
на это дело руголось, говорил типа неоднозначно)
переименовал поле и закружилось
...
Рейтинг: 0 / 0
UPDATE из других таблиц
    #33202077
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
UPDATE из других таблиц
    #33202086
push
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я пробовал
не хочет так.
пишет типа нет такого столбца sklad (???)
...
Рейтинг: 0 / 0
UPDATE из других таблиц
    #33202107
push
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
столбца vcard, заработался уже
...
Рейтинг: 0 / 0
UPDATE из других таблиц
    #33202195
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, простите,
SELECT version();
????
...
Рейтинг: 0 / 0
UPDATE из других таблиц
    #33202246
push
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PostgreSQL 8.0.3 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE из других таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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