Перейти к содержанию

Рекомендуемые сообщения

Здравствуйте.

Необходимо в БД создать копию заказа. Для этого я копирую нужный мне заказ в таблице order. Новый заказ появляеся в админке, но в нем нет ни товаров, ни опций товаров, ни истории. Я конечно могу найти соответствующие записи в таблицах order_history, order_product и order_option и скопировать их. Но это получается очень долго, тем более если в заказе много товаров с разными опциями.

Знаю, что скопировать заказ можно автоматически с помощью SQL запроса, но сожалению язык SQL запросов мне не знаком. Поэтому прошу помощи в создании такого запроса к БД, который создаст копию определенного заказа.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно создать процедуру, на вход подается номер исходного заказа

DROP PROCEDURE IF EXISTS `copy_order`;
DELIMITER $$
CREATE PROCEDURE `copy_order` (IN `source_order_id` INT(11))
BEGIN
    DECLARE new_order_id int(11);
    INSERT INTO moc_order(date_added, store_id, store_name) SELECT mo.date_added, mo.store_id, mo.store_name FROM moc_order mo WHERE mo.order_id = source_order_id;
    SET new_order_id = LAST_INSERT_ID();
    INSERT INTO moc_order_product(order_id, product_id, `name`, price) SELECT new_order_id, mop.product_id, mop.name, mop.price FROM moc_order_product mop WHERE mop.order_id = source_order_id;
END;$$
DELIMITER;

Тут копируется только несколько полей и только табличка с товарами. По аналогии добавить копирование остальных таблиц относящихся к заказу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.