ОБНОВЛЕНИЕ с ВНУТРЕННИМ СОЕДИНЕНИЕМ - PostgreSQL - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть две таблицы, одна из которых называется customer, а другая - referrals. Мне нужно добавить несколько чисел в два столбца в таблице «переходы», но чтобы узнать, какие из них, мне нужно обратиться к таблице «клиент», так как это тот, который имеет group_id.

Вот пример того, что я пытался

UPDATE referrals AS r 
SET total_coins_received = r.total_coins_received + 2, unused_ref_coins = r.unused_ref_coins + 2
FROM customer AS c
WHERE c.group_id = '1' and c.subscription_state = 'active';

Это игнорировало мое состояние WHERE и обновляло все поля, даже если оно не соответствовало "group_id "

Как я могу просто сослаться на то, что мне нужно просто изменить те из них, которые применяются к условиям?

Это скрипка с примером того, что происходит: https://www.db-fiddle.com/f/4jyoMCicNSZpjMt4jFYoz5/239

1 Ответ

2 голосов
/ 21 апреля 2020

Добавьте в условие WHERE условие, связывающее две таблицы:

WHERE c.cust_id = r.cust_id and c.group_id = '1' and c.subscription_state = 'active';

Без условия c.cust_id = r.cust_id вы получите декартово произведение referrals и строки customer которые удовлетворяют условиям c.group_id = '1' and c.subscription_state = 'active', и поэтому все строки referrals обновляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...