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

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


Recommended Posts

Добрый день!
Добавил на сайте эстонский язык.
Теперь для всех товаров надо скопировать значения атрибутов из английской локализации и залить в эстонскую.
Подскажите, как в БД прописать запрос чтобы значения  атрибутов скопировать из language_id=4 и залить в anguage_id=6 ?
Когда-то такое делал, но нигде не могу найти этот запрос.
Заранее спасибо!

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


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

Добрый день!
Добавил на сайте эстонский язык.
Теперь для всех товаров надо скопировать значения атрибутов из английской локализации и залить в эстонскую.
Подскажите, как в БД прописать запрос чтобы значения  атрибутов скопировать из language_id=4 и залить в anguage_id=6 ?
Когда-то такое делал, но нигде не могу найти этот запрос.
Заранее спасибо!

не уверен

экспорт в эксель

эксель правите

и импорт на сайт

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


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

не уверен

экспорт в эксель

эксель правите

и импорт на сайт

Да, вы правы, но это очень долго. Товаров много и экселем придется разбить примерно на 15 частей.
А запросом в БД - это займет 10 секунд.

Змінено користувачем AlexandrSY
Надіслати
Поділитися на інших сайтах


13 минут назад, AlexandrSY сказал:

А запросом в БД - это займет 10 секунд.

2 сек

DELETE FROM product_atrribute WHERE language_id=Эстонский
INSERT INTO product_atrribute SELECT FROM product_atrribute WHERE language_id=Английский


Про бекап не забудьте

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

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

2 сек

DELETE FROM product_atrribute WHERE language_id=Эстонский
INSERT INTO product_atrribute SELECT FROM product_atrribute WHERE language_id=Английский


Про бекап не забудьте

Большое спасибо!
Уточнение - DELETE FROM - это зачем? Мне удалять ничего не надо, только скопировать значения атрибутов товаров из английской версии (language_id=4) и добавить в эстонскую  (language_id=6)

Змінено користувачем AlexandrSY
Надіслати
Поділитися на інших сайтах


INSERT INTO product_atrribute (product_id,attribute_id, language_id, text)
SELECT pa1.product_id, pa1.attribute_id, 3, pa1.text
FROM oc_product_attribute pa1
LEFT JOIN oc_product_attribute pa2  ON  pa1.attribute_id = pa2.attribute_id AND pa1.product_id = pa2.product_id AND pa1.language_id=2 and pa2.language_id = 3
where pa2.product_id is null

 

3- эст
2 - англ

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

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

А что делать если дублирующая запись  https://prnt.sc/y18spi ?

хм.. не не должно

SELECT pa1.product_id, pa1.attribute_id, 3, pa1.text
FROM oc_product_attribute pa1
LEFT JOIN oc_product_attribute pa2 

 

Это условие должно было его исключить

 

В 01.02.2021 в 17:36, chukcha сказал:

pa1.attribute_id = pa2.attribute_id AND pa1.product_id = pa2.product_id AND pa1.language_id=2 and pa2.language_id = 3


 

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

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

Это условие должно было его исключить

А что это за тройка https://prnt.sc/y1u7tv ? Это id языка?
Я вместо тройки поставил шестерку. Эстонский язык у меня с id 6

Змінено користувачем AlexandrSY
Надіслати
Поділитися на інших сайтах


Извините писал с листа
INSERT INTO car_product_attribute (product_id,attribute_id, language_id, text)
SELECT pa1.product_id, pa1.attribute_id, 3, pa1.text
FROM car_product_attribute pa1
LEFT JOIN car_product_attribute pa2 ON
pa1.attribute_id = pa2.attribute_id AND pa1.product_id = pa2.product_id
AND pa1.language_id=2 and pa2.language_id=3
where pa2.product_id is null and pa1.language_id <>3

 

 

3 - эст

2 - англ

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

1 час назад, chukcha сказал:

Извините писал с листа...

Хм, дублирующаяся запись '6651-387-6' по ключу 'oc_product_attribute.PRIMARY' https://prnt.sc/y24u9j  

Змінено користувачем AlexandrSY
Надіслати
Поділитися на інших сайтах


SELECT pa1.product_id, pa1.attribute_id, 3, pa1.text
FROM car_product_attribute pa1
LEFT JOIN car_product_attribute pa2 ON
pa1.attribute_id = pa2.attribute_id AND pa1.product_id = pa2.product_id
AND pa1.language_id=2 and pa2.language_id=3
where pa2.product_id is null and pa1.language_id <>3

MySQL вернула пустой результат (т.е. ноль строк)

 

DELETE FROM `car_product_attribute` WHERE `car_product_attribute`.`product_id` = 68 AND `car_product_attribute`.`attribute_id` = 15 AND `car_product_attribute`.`language_id` = 3;
DELETE FROM `car_product_attribute` WHERE `car_product_attribute`.`product_id` = 68 AND `car_product_attribute`.`attribute_id` = 18 AND `car_product_attribute`.`language_id` = 3;

 

 

 

SELECT pa1.product_id, pa1.attribute_id, 3, pa1.text FROM car_product_attribute pa1 LEFT JOIN car_product_attribute pa2 ON pa1.attribute_id = pa2.attribute_id AND pa1.product_id = pa2.product_id AND pa1.language_id=2 and pa2.language_id=3 where pa2.product_id is null and pa1.language_id <>3
 
Отображение строк 0 - 1 (2 всего,
 
 
INSERT INTO car_product_attribute (product_id,attribute_id, language_id, text) SELECT pa1.product_id, pa1.attribute_id, 3, pa1.text FROM car_product_attribute pa1 LEFT JOIN car_product_attribute pa2 ON pa1.attribute_id = pa2.attribute_id AND pa1.product_id = pa2.product_id AND pa1.language_id=2 and pa2.language_id=3 where pa2.product_id is null and pa1.language_id <>3
 
Добавлено 2 строки.
 
  • +1 1
Надіслати
Поділитися на інших сайтах

SELECT pa1.product_id, pa1.attribute_id, 3, pa1.text
FROM car_product_attribute pa1
LEFT JOIN car_product_attribute pa2 ON
pa1.attribute_id = pa2.attribute_id AND pa1.product_id = pa2.product_id
AND pa2.language_id=3
where pa2.product_id is null and pa1.language_id =2

 

Тут даже, может быть  во так правильно (точнее так правильно)

 

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

1 час назад, chukcha сказал:

....AND pa2.language_id=3
where pa2.product_id is null and pa1.language_id =2

 

Тут даже, может быть  во так правильно (точнее так правильно)

 

chukcha  получилось!
Вот код :

INSERT INTO oc_product_attribute (product_id,attribute_id, language_id, text) 
SELECT pa1.product_id, pa1.attribute_id, 6, pa1.text FROM oc_product_attribute pa1 
LEFT JOIN oc_product_attribute pa2 
ON pa1.attribute_id = pa2.attribute_id 
AND pa1.product_id = pa2.product_id 
AND pa2.language_id=6 
where pa2.product_id is null and pa1.language_id=4

Спасибо большое! 

Змінено користувачем AlexandrSY
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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