SQL запрос по кнопке в админке

Тема в разделе "Общие вопросы", создана пользователем dofus, 26 дек 2022.

  1. dofus

    dofus Пользователь

    Сообщения:
    85
    Симпатии:
    1
    Ребята, доброй ночи!
    Прошу помочь мне с таким вопросом:
    Есть SQL запрос, который должен работать по кнопке
    Код:
    DROP TABLE oc_product_option_value_sum;
    CREATE TABLE oc_product_option_value_sum AS SELECT
        product_id,
        SUM(price) AS mpn
    FROM
        `oc_product_option_value` AS option_select_sum
    WHERE
        option_select = 1
    GROUP BY
        product_id;
    UPDATE
        oc_product,
        oc_product_option_value_sum
    SET
        oc_product.mpn = oc_product_option_value_sum.mpn
    WHERE
        oc_product.product_id = oc_product_option_value_sum.product_id;
    Со всем разобрался, но проблема в файле controll как я понимаю
    Подскажите, что я не так записал в коде ниже?
    Правильно я перевел запрос в код?
    Код:
    $this->db->query("DROP TABLE " . DB_PREFIX . "`oc_product_option_value_sum`; CREATE TABLE"  . DB_PREFIX . "oc_product_option_value_sum AS SELECT product_id, SUM(price) AS mpn FROM"   . DB_PREFIX . "`oc_product_option_value` AS option_select_sum WHERE option_select = 1 GROUP BY product_id; UPDATE "   . DB_PREFIX . "oc_product,"   . DB_PREFIX . " oc_product_option_value_sum SET"   . DB_PREFIX . "oc_product.mpn ="   . DB_PREFIX . "oc_product_option_value_sum.mpn WHERE"   . DB_PREFIX . "oc_product.product_id = "   . DB_PREFIX . "oc_product_option_value_sum.product_id;");
            
     
  2. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    730
    Симпатии:
    100
    Сделайте 3 отдельных $this->db->query

    Т.е. отдельно дроп таблицы, отдельно создаие и отдельно цены
     
    dofus нравится это.
  3. dofus

    dofus Пользователь

    Сообщения:
    85
    Симпатии:
    1
    Все равно не корректно отрабатывает
    По идее должно как происходить:
    В админке я меняю цену опции по умолчанию, жму кнопку
    Удаляется таблица из базы
    Создается новая, где суммирует все опции по умолчанию и следовательно наша измененная опция тоже суммируется, с группировкой по продукт айди
    Суммы записываются в mpn и выводятся как цена в каталог

    А на деле происходит что таблица не удаляется, соответственно и новая не создается, а вот в конечной таблице значение mpn заменяется на 0
     
  4. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    730
    Симпатии:
    100
    Так у вас в query некорректно

    НЕ

    Код:
    "DROP TABLE " . DB_PREFIX . "`oc_product_option_value_sum`
    А это

    Код:
    "DROP TABLE `" . DB_PREFIX . "product_option_value_sum`
     
  5. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    730
    Симпатии:
    100
    Ну и по аналогии в create table и update. В DB_PREFIX хранится префикс oc_. Соответственно, у вас названия таблиц некорректные, ну и косую запятую ` нужно ставить перед префиксом, а не после.