Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Задвоение товаров в Базе данных SQL как убрать


Recommended Posts

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

 есть сайт kosmetichka77.ru

Товаров порядка 12к , при заливке с эксель задвоились.

Залез в БД через phpmyadmin, создал запрос о дублях

SELECT name, count(*) FROM `oc_product_description` GROUP BY name HAVING count(*) > 1    

 

два столбца "count" и "name", ТАМ ГДЕ ЗАДВОЕНИЕ В  "count" цифра два (это и понятно -количество задвоенных строк) ,  с помощью каких запросов убрать дубли ??

8764beae1505279af613709f5af07ccf.jpg

Надіслати
Поділитися на інших сайтах


46 минут назад, RomanArom сказал:

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

 есть сайт kosmetichka77.ru

Товаров порядка 12к , при заливке с эксель задвоились.

Залез в БД через phpmyadmin, создал запрос о дублях

SELECT name, count(*) FROM `oc_product_description` GROUP BY name HAVING count(*) > 1    

 

два столбца "count" и "name", ТАМ ГДЕ ЗАДВОЕНИЕ В  "count" цифра два (это и понятно -количество задвоенных строк) ,  с помощью каких запросов убрать дубли ??

вполне вероятно, что эти записи отличаются значением поля language_id, т.е. просто под два ваших активных языка создались записи с одинаковыми названиями одного и того же товара.

тогда достаточно деактивировать ненужный вам язык и выполнить запрос

DELETE FROM `oc_product_description` WHERE `language_id` = ненужный_ид

 

Надіслати
Поділитися на інших сайтах

SELECT max(product_id)  FROM `oc_product_description`
            WHERe language_id =1
            GROUP BY name HAVING count(*) >1
            )


2. Создать временную таблицу из этих id

 

3
DELETE p,pd, pa, ps, pdi
FROM oc_product p
LEFT JOIN oc_product_description as pd  using (product_id)
LEFT JOIN oc_product_attribute as pa using (product_id)
LEFT JOIN oc_product_special as ps using (product_id)
LEFT JOIN oc_product_discount as pdi using (product_id)
WHERE p.product_id in ( SELECT product_id FROM temp_table)

  • +1 1
Надіслати
Поділитися на інших сайтах

В 01.09.2021 в 00:37, Blast сказал:

вполне вероятно, что эти записи отличаются значением поля language_id, т.е. просто под два ваших активных языка создались записи с одинаковыми названиями одного и того же товара.

тогда достаточно деактивировать ненужный вам язык и выполнить запрос


DELETE FROM `oc_product_description` WHERE `language_id` = ненужный_ид

 

Посмотрел "language id" везде "1" ... 

Новый точечный рисунок (2).bmp

Надіслати
Поділитися на інших сайтах


В 01.09.2021 в 00:38, chukcha сказал:

SELECT max(product_id)  FROM `oc_product_description`
            WHERe language_id =1
            GROUP BY name HAVING count(*) >1
            )


2. Создать временную таблицу из этих id

 

3
DELETE p,pd, pa, ps, pdi
FROM oc_product p
LEFT JOIN oc_product_description as pd  using (product_id)
LEFT JOIN oc_product_attribute as pa using (product_id)
LEFT JOIN oc_product_special as ps using (product_id)
LEFT JOIN oc_product_discount as pdi using (product_id)
WHERE p.product_id in ( SELECT product_id FROM temp_table)

2. Создать временную таблицу из этих id

 

так?

CREATE TABLE #NEW
(product_id)
INSERT INTO #NEW  `max(product_id)`

 

 

Новый точечный рисунок (2).bmp

Надіслати
Поділитися на інших сайтах


https://dev.mysql.com/doc/refman/8.0/en/create-table-select.html

 

CREATE TABLE #NEW
SELECT max(product_id) as product_id FROM `oc_product_description`
            WHERe language_id =1
            GROUP BY name HAVING count(*) >1
            )

 

 

DELETE p,pd, pa, ps, pdi
FROM oc_product p
LEFT JOIN oc_product_description as pd  using (product_id)
LEFT JOIN oc_product_attribute as pa using (product_id)
LEFT JOIN oc_product_special as ps using (product_id)
LEFT JOIN oc_product_discount as pdi using (product_id)
JOIN temp_table using(product_id)

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.