как обновить таблицу с определенным значением из другой таблицы с условием из третьей таблицы - PullRequest
1 голос
/ 26 мая 2019

Я пытаюсь обновить данные своей компании. У меня есть три таблицы с большими данными

Имя таблицы: Счета

id    |    balance    |    currency_id
1          7000            7
2          100             7
3          6000            6

Имя таблицы: Члены

id    |    email
1          ted@gmail.com
2          tom@gmail.com

Имя таблицы: Fund

email          |    balance
ted@gmail.com       7000
tom@gmail.com       8000

как обновить Accounts.balance со значениями из Fund.balance, где currency_id = 7 и Members.email = Fund.email

, как описано выше

как обновить account.balance со 100, чтобы сбалансировать новое значение 8000 из таблицы Fund для этого электронного письма "tom@gmail.com" в качестве примера?.

у меня проблема в том, что нетИдентификатор в таблице фонда - только электронная почта, такая же, как в таблицах участников, поэтому мы должны проверить, используя электронную почту вместо идентификатора.

1 Ответ

1 голос
/ 26 мая 2019

Вы можете использовать INNER JOIN для обновления значения в таблице счетов из фонда.Убедитесь, что соответствующие данные доступны в таблице Member and Fund.

Примечание: попробуйте сначала скрипт с тестовыми данными.

UPDATE Accounts AS A
INNER JOIN Members AS M ON A.ID = M.ID
INNER JOIN Fund AS F ON M.email = F.email
SET A.balance = F.balance
WHERE  A.currency_id =7

Если есть возможность не иметь данных в таблице Fund для Currency_id =7 и если вы хотите сохранить старое значение в этом случае, вы можете использовать регистр, как показано ниже -

SET A.balance = CASE WHEN F.balance IS NULL THEN A.balance ELSE F.balance END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...