Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Удаление товаров c определённым количеством через SQL


Dozent
 Поделиться

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

просто парсер товаров тупил и наплодил по 2 дубля товаров, хорошо что указал количество 999 для отличия от остальных категорий

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


выведите товаров в админке по 500 или 1000 (делается в настройках, вкладка опции) и отсортируйте товар по кол-ву и удалите в ручную. как вариант. 

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


select product_id from oc oc_product where quantity = 10

{

delete * from oc_product where product_id = $query['product_id']
delete * from oc_product_description where product_id = $query['product_id']

....

}

Подставить php синтаксис.
И удалять в цикле в каждой нужной таблице.
Как-то так.

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

5 минут назад, magneto2010 сказал:

выведите товаров в админке по 500 или 1000 (делается в настройках, вкладка опции) и отсортируйте товар по кол-ву и удалите в ручную. как вариант. 

6000 товаров как то не сильно охотно удалять ручками :)

 

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


DELETE t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 FROM oc_product AS t1
LEFT JOIN oc_product_attribute AS t2 ON(t1.product_id=t2.product_id)
LEFT JOIN oc_product_description AS t3 ON(t1.product_id=t3.product_id)
LEFT JOIN oc_product_discount AS t4 ON(t1.product_id=t4.product_id)
LEFT JOIN oc_product_image AS t5 ON(t1.product_id=t5.product_id)
LEFT JOIN oc_product_option AS t6 ON(t1.product_id=t6.product_id)
LEFT JOIN oc_product_option_value AS t7 ON(t1.product_id=t7.product_id)
LEFT JOIN oc_product_related AS t8 ON(t1.product_id=t8.product_id)
LEFT JOIN oc_product_reward AS t9 ON(t1.product_id=t9.product_id)
LEFT JOIN oc_product_special AS t10 ON(t1.product_id=t10.product_id)
LEFT JOIN oc_product_to_category AS t11 ON(t1.product_id=t11.product_id)
LEFT JOIN oc_product_to_download AS t12 ON(t1.product_id=t12.product_id)
LEFT JOIN oc_product_to_layout AS t13 ON(t1.product_id=t13.product_id)
LEFT JOIN oc_product_to_store AS t14 ON(t1.product_id=t14.product_id)
LEFT JOIN oc_review AS t15 ON(t1.product_id=t15.product_id)
WHERE t1.product_id
IN (SELECT product_id FROM (SELECT product_id FROM `oc_product` WHERE quantity = 999) x)

взято отсюда и поправлено под твои нужны  https://opencartforum.com/topic/119693-udalenie-dubley-po-tipu-tovar1tovar1-pomosch/

 

Только бекап сделай на всякий случай.

 

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах

25 минут назад, Dozent сказал:

6000 товаров как то не сильно охотно удалять ручками :)

 

Может быть поможет
http://www.mysqltutorial.org/mysql-delete-join/
 

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


бекап, бекап, бекап

 

CREATE TABLE tmp_t CREATE SELECT product_id FROM oc_product WHERE quantity = 0;

DELETE FROM p FROM oc_product_attribute p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_description p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_discount p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM  oc_product_filter p 
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_image p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_option p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_option_value p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_related p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_reward p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_special p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_to_category p 
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_to_download p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_to_layout p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_product_to_store p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_review p
INNER JOIN tmp_t t on t.product_id = p.product_id;

DELETE FROM p FROM oc_url_alias p
INNER JOIN tmp_t t WHERE p.query = CAONCAT('product_id=',t.product_id);


DELETE FROM p FROM  oc_products p
INNER JOIN tmp_t t on t.product_id = p.product_id;

Если не ошибся при копипасте

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

4 минуты назад, chukcha сказал:

бекап, бекап, бекап

 

Если не ошибся при копипасте

Стейжинги рулят, конечно.
 

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

7 минут назад, splka сказал:

Стейжинги рулят, конечно.

Чего вы сказали?

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

24 минуты назад, chukcha сказал:

Чего вы сказали?

Перевожу - не продакшн, то что видно клиентам, а стейджинг - тестовая версия сайта.
т.е. всё делать надо с бекапами и в том, месте где это будет безболезненно.

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

DELETE p1,
       p2,
       p3,
       p4,
       p5,
       p6,
       p7,
       p8,
       p9,
       p10,
       p11,
       p12,
       p13,
       p14,
       p15,
       p16
FROM `oc_product` p1
LEFT JOIN `oc_product_attribute` p2 ON (p2.product_id = p1.product_id)
LEFT JOIN `oc_product_description` p3 ON (p3.product_id = p1.product_id)
LEFT JOIN `oc_product_discount` p4 ON (p4.product_id = p1.product_id)
LEFT JOIN `oc_product_filter` p5 ON (p5.product_id = p1.product_id)
LEFT JOIN `oc_product_image` p6 ON (p6.product_id = p1.product_id)
LEFT JOIN `oc_product_option` p7 ON (p7.product_id = p1.product_id)
LEFT JOIN `oc_product_option_value` p8 ON (p8.product_id = p1.product_id)
LEFT JOIN `oc_product_recurring` p9 ON (p9.product_id = p1.product_id)
LEFT JOIN `oc_product_related` p10 ON (p10.product_id = p1.product_id)
LEFT JOIN `oc_product_reward` p11 ON (p11.product_id = p1.product_id)
LEFT JOIN `oc_product_special` p12 ON (p12.product_id = p1.product_id)
LEFT JOIN `oc_product_to_category` p13 ON (p13.product_id = p1.product_id)
LEFT JOIN `oc_product_to_download` p14 ON (p14.product_id = p1.product_id)
LEFT JOIN `oc_product_to_layout` p15 ON (p15.product_id = p1.product_id)
LEFT JOIN `oc_product_to_store` p16 ON (p16.product_id = p1.product_id)

WHERE p1.quantity = 999

 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


4 часа назад, Dozent сказал:

6000 товаров как то не сильно охотно удалять ручками :)

 

 

6 страниц по 1000 или 12 по 500 лень? не отвечайте, вам скорее всего лень.

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


18 часов назад, magneto2010 сказал:

 

6 страниц по 1000 или 12 по 500 лень? не отвечайте, вам скорее всего лень.

у меня в админке только 60

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


Не проще ли выбрать все товары с количеством 999 и прогнать через функцию productDelete или как там ее)

Один sql запрос и один цикл

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

11 минут назад, Leingard сказал:

Один sql запрос и один цикл

Та вы шо?

Вы смотрели в админку?
 

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

23 минуты назад, Leingard сказал:

Не проще ли выбрать все товары с количеством 999 и прогнать через функцию productDelete или как там ее)

Один sql запрос и один цикл

Всё правильно 

Даже в родную функцию delete передать не чекбоксы, а массив товаров у которых количество 999

С этим справится любой и будет кошернее чем эти адовые запросы 

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

В 27.12.2018 в 19:22, magneto2010 сказал:

 

6 страниц по 1000 или 12 по 500 лень? не отвечайте, вам скорее всего лень.

 

 

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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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