Jump to content
Sign in to follow this  
Dozent

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

Recommended Posts

Подскажите как массово удалить товары с количеством например "999" через SQL запрос ?

Share this post


Link to post
Share on other sites

через один? врядли. нудо несколько. т.к. таблиц много. мало того, некоторые модули создают еще свои таблицы

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 синтаксис.
И удалять в цикле в каждой нужной таблице.
Как-то так.

Share this post


Link to post
Share on other sites
5 минут назад, magneto2010 сказал:

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

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

 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

 

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;

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

Share this post


Link to post
Share on other sites
4 минуты назад, chukcha сказал:

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

 

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

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

Share this post


Link to post
Share on other sites
7 минут назад, splka сказал:

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

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

Share this post


Link to post
Share on other sites
24 минуты назад, chukcha сказал:

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

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

В аопе можно в инструментах выставить ваше количество и потом удалить эти товары

Share this post


Link to post
Share on other sites
4 часа назад, Dozent сказал:

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

 

 

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

Share this post


Link to post
Share on other sites
18 часов назад, magneto2010 сказал:

 

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
11 минут назад, Leingard сказал:

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

Та вы шо?

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

Share this post


Link to post
Share on other sites
23 минуты назад, Leingard сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
В 27.12.2018 в 19:22, magneto2010 сказал:

 

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

 

 

Share this post


Link to post
Share on other sites

мне когда ваще лень, я пишу в getProducts вызов deleteproduct

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.