Добавление оператора If внутри обновления в MySQL - PullRequest
0 голосов
/ 04 апреля 2019

Я очень новичок в MySQL, и у меня должен быть проект в понедельник. У меня есть проблема при попытке добавить запрос / триггер для выполнения следующих действий:

Мой проект говорит, что «когда клиент регистрируется, он получает 30-дневную бесплатную пробную версию для обслуживания клиентов, после чего он платит» Поэтому я пытаюсь (и не могу) добавить что-то, что проверит, была ли учетная запись зарегистрирована в течение 30 дней, если это так, тип учетной записи изменится на «Платная подписка», если нет, то останется «Свободным трейлом»

Я могу заставить это работать отдельно, но не вместе.

Вот мой стол:

 customer_id varchar (100) NOT NULL,
  first_name varchar (20) not null,
  last_name varchar (20) not null,
  phone_no varchar (20) not null,
  email_address varchar (20) not null,
  address varchar (100) not null,
  city varchar (20) not null,
  country varchar (20) not null,
  date_of_registration date,
  account_type varchar (20) not null,
  PRIMARY KEY (customer_id)
  ) DATA DIRECTORY='c:/mamp';

спасибо!

1 Ответ

1 голос
/ 04 апреля 2019

Согласно тому, что вы спрашиваете, вы можете сделать что-то вроде этого (для синтаксиса IF)

SELECT 
    first_name, last_name, email_address,
    IF(NOW() > date_of_registration + INTERVAL 30 DAY, 'paid', 'free') as status
FROM users WHERE id = XX

Конечно, выберите нужные поля и приспособьте предложение WHERE к вашим потребностям. У вас будет значение статуса, которое будет содержать «платный» или «бесплатный»

!!! НО !!! это, вероятно, не то, что вы хотите с логической точки зрения. Фактически предыдущий запрос возвращает «оплачено», если учетная запись старше 30 дней. Вы должны проверить account_type в вашей обработке после.

Я бы предложил вам добавить поле available_until:

  • user register => account_type = "free", available_until = NOW () + 30d

Если пользователь платит в течение 30 дней. После оплаты SET account_type = "paid" и available_until = {раз, когда вы хотите}

Теперь у вас есть только возможность проверить, доступен ли аккаунт available_until после текущего дня, и вас не интересует тип аккаунта.

...