Поле обновления SQL для каждого значения, связанного с ним - PullRequest
0 голосов
/ 10 февраля 2019

Мне нужно создать запрос, который увеличивает клиентскую скидку на 10 (добавляет 10 к предыдущему значению) для каждого заказа, сделанного этим клиентом.

Структура базы данных выглядит следующим образом:

CLIENT(client_id, name, discount)
ORDER(id, client_id)


У кого-нибудь есть идеи?

Ответы [ 3 ]

0 голосов
/ 10 февраля 2019

Я думаю, это то, что вам нужно:

UPDATE CLIENT c 
SET c.DISCOUNT = c.DISCOUNT + 10 * (SELECT COUNT(*) FROM ORDER WHERE client_id = c.client_id)

В этом утверждении

SELECT COUNT(*) FROM ORDER WHERE client_id = c.client_id

возвращает количество заказов, размещенных каждым клиентом

0 голосов
/ 10 февраля 2019

Подзапрос будет лучшим решением для таких случаев

ОБНОВЛЕНИЕ КЛИЕНТА SET CLIENT.DISCOUNT = CLIENT.DISCOUNT + 10 * (ВЫБЕРИТЕ COUNT (*) ОТ ЗАКАЗА ГДЕ client_id = CLIENT.client_id)

0 голосов
/ 10 февраля 2019

ОБНОВЛЕНИЕ КЛИЕНТА УСТАНОВИТСЯ СКИДКА = 10 ГДЕ client_id in (ВЫБЕРИТЕ client_id из ORDER)

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