Обновление значения из таблицы, которое зависит от значения столбца ENUM в другой таблице - PullRequest
0 голосов
/ 22 октября 2018

У меня есть одна таблица placed_order, которая содержит столбцы order_time (отметка времени), estimated_delivery_time (отметка времени) и другие.Во второй таблице addresses есть столбец zone (отдельно от других).Столбец zone является полем ENUM и содержит значения «Зона 1», «Зона 2», «Зона 3».

Теперь мне нужно вычислить estimated_delivery_time.В зависимости от зон, это order_time плюс 10 минут (Зона 1), 15 минут (Зона 2) или 20 минут (Зона 3).

Я уже узнал, как вычислить estimated_delivery_time, вручную добавив минуты:

UPDATE `placed_order` 
SET `estimated_delivery_time` = DATE_ADD(`order_time`, INTERVAL 10 MINUTE)
WHERE placed_order_id = 9;

Но я абсолютно не могу найти решение, как можно вычислить estimated_delivery_timeв зависимости от зон.Я уже пробовал это с предложениями SELECT IF и CASE, но не смог найти способ.Есть предложения?

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете использовать Case .. When для обновления estimated_delivery_time.Попробуйте следующий запрос:

UPDATE `placed_order` AS po 
JOIN `addresses` AS addr ON addr.customer_id = po.customer_id 
SET po.estimated_delivery_time = CASE addr.zone 
                                   WHEN 'Zone 1' 
                                     THEN DATE_ADD(po.order_time, INTERVAL 10 MINUTE)
                                   WHEN 'Zone 2' 
                                     THEN DATE_ADD(po.order_time, INTERVAL 15 MINUTE)
                                   WHEN 'Zone 3' 
                                     THEN DATE_ADD(po.order_time, INTERVAL 20 MINUTE)
                                 END 
...