Mysql Добавляет дни к дате из двух разных столбцов

#mysql #mamp #dateadd

#mysql #mamp #dateadd

Вопрос:

Привет, моя проблема связана с добавлением дней к дате из двух разных таблиц в MySQL в среде Mamp.

Транзакция членства
Тип членства Тип членства для транзакции членства равен 1 ко многим, ссылка type_id

Дата также указана в yyyy/mm/dd формате, поскольку это единственный формат, который Mamp допускает из моего исследования.
Я хочу новый столбец даты окончания, который ссылается на длительность столбца из таблицы типов членства. Я хочу добавить Duration_day onto start_date , чтобы получить конечную дату, которая совпадает с type_id. (Таким образом, они соединяются, чтобы указать правильную конечную дату)
Я хочу, чтобы это автоматически вычислялось при сохранении даты начала и идентификатора типа

Любая помощь была бы оценена, спасибо

Комментарии:

1. Можете ли вы указать, что вы пробовали до сих пор, и что не работает

2. Отредактируйте свой первоначальный вопрос. Пожалуйста, используйте текст типа SHOW CREATE TABLE tablename , чтобы показать структуру ваших данных.

Ответ №1:

Вам понадобится триггер при ВСТАВКЕ / ОБНОВЛЕНИИ — вычисляемый столбец (для MySQL версии 5.7.6 ) в вашем случае не будет работать (он может ссылаться только на столбцы в одной таблице). Два триггера могут выглядеть следующим образом

 CREATE DEFINER = 'root'@'%' TRIGGER `m_duration_ins_tr1` BEFORE INSERT ON `membership`
  FOR EACH ROW
BEGIN
DECLARE duration INTEGER;
    SELECT m_duration INTO duration FROM membership_type WHERE id = NEW.type_id;
    SET NEW.end_date := DATE_ADD(NEW.start_date, INTERVAL duration DAY);
END;

CREATE DEFINER = 'root'@'%' TRIGGER `m_duration_ins_tr1` BEFORE UPDATE ON `membership`
  FOR EACH ROW
BEGIN
DECLARE duration INTEGER;
    SELECT m_duration INTO duration FROM membership_type WHERE id = NEW.type_id;
    SET NEW.end_date := DATE_ADD(NEW.start_date, INTERVAL duration DAY);
END;