обновление полей таблицы, где поля в таблице A = поля в таблице B - PullRequest
0 голосов
/ 08 июля 2011

HELP!вот моя проблема, я не знаю, что происходит, у меня есть две таблицы: одна продажа и другая транзакция , таблица транзакций такая же, как таблица продаж, но очень подробноТаблица продаж - это просто общая продажа ... ну, в таблице продаж у меня есть некоторые продажи в 0 .. Я хочу обновить детали продаж из транзакций так, чтобы в обеих таблицах было 0 .. Теперь вот команда обновления

ОБНОВЛЕНИЕ транзакции SET total_sale = 0 ГДЕ транзакция.idrecipt = sales.idreceipt

проблема в том, что он обновляет только 5 полей из справки по транзакции !!что я делаю не так !!

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Во-первых, я укажу, что, как правило, считается плохим проектом помещать одни и те же данные в две разные таблицы.Я бы даже сказал, что нет причин хранить total_sale где-либо;Вы всегда можете рассчитать его по транзакциям, составляющим продажу.

Проблема, с которой вы столкнулись, заключается в том, что вы смотрите только на текущую запись в разделе Продажи.Попробуйте это вместо этого.Я также исправляю вашу команду, чтобы она влияла только на продажи, где total_sale = 0 сейчас.В противном случае вы будете устанавливать для каждой транзакции значение 0, что, как мне кажется, не то, что вам нужно:

UPDATE transaction ;
  SET total_sale=0 ;
  FROM sales ;
  WHERE transaction.idreceipt=sales.idreceipt ;
   AND sales.total_sale=0

Тамар

0 голосов
/ 08 июля 2011

Проблема в том, что указатель не перемещается в вашей таблице продаж, поэтому вы работаете только с одним и тем же идентификатором. Вам нужно просмотреть таблицу продаж:

Вот один из способов исправить это

Select Sales

Scan
    UPDATE transaction SET total_sale=0 WHERE transaction.idrecipt = sales.idreceipt
EndScan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...