Массово присвоить рекомендуемые товары

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

prihod
prihod
Репутация: 4
Сообщения: 41
Зарегистрирован: 05.08.2020
С нами: 3 года 7 месяцев
Откуда: Киев

Сообщение #1 prihod » 05.01.2021, 12:48

Приветствую!
В каталоге без малого 20к товаров. Вручную пройти по всем товарам займет уйму времени.

Гуру mysql, нужен запрос который присвоит всем товарам из категории Х, по 5 рекомендуемых товаров (id=1,2,3,4,5) в таком же порядке.
то есть, у каждого товара категории Х будет по 5 товаров в порядке указания их id

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

Код: Выделить всё

SELECT
ok_related_products.related_id,
ok_related_products.product_id,
ok_related_products.position
FROM
ok_products_categories
INNER JOIN ok_related_products ON ok_related_products.product_id = ok_products_categories.product_id
WHERE
ok_products_categories.category_id = 25
ORDER BY
ok_related_products.product_id ASC


Если задача трудозатратная, озвучьте стоимость.

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #2 makki » 05.01.2021, 13:22

Непонятен вопрос. Попробуйте переформулировать
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

prihod
prihod
Репутация: 4
Сообщения: 41
Зарегистрирован: 05.08.2020
С нами: 3 года 7 месяцев
Откуда: Киев

Сообщение #3 prihod » 05.01.2021, 13:31

На живом примере.
Категория товаров "Плитка"
Всем товарам этой категории рекомендуем клей для плитки, затирку и другие сопутствующие материалы.
В результате должна получиться таблица в БД ok_related_products, вида https://prnt.sc/wgquzs

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #4 korshunov » 05.01.2021, 13:58

Примерно так (если я верно понял, ибо постановка вопроса точностью не отличается):

delete from ok_related_products where product_id in ( select DISTINCT id from ok_products where main_category_id=25);
INSERT INTO ok_related_products (product_id, related_id, position) select DISTINCT id, 111, 0 from ok_products where main_category_id=25;
INSERT INTO ok_related_products (product_id, related_id, position) select DISTINCT id, 222, 1 from ok_products where main_category_id=25;
INSERT INTO ok_related_products (product_id, related_id, position) select DISTINCT id, 333, 2 from ok_products where main_category_id=25;
INSERT INTO ok_related_products (product_id, related_id, position) select DISTINCT id, 444, 3 from ok_products where main_category_id=25;
INSERT INTO ok_related_products (product_id, related_id, position) select DISTINCT id, 555, 4 from ok_products where main_category_id=25;

Tolly
Tolly
Репутация: 0
Сообщения: 17
Зарегистрирован: 15.02.2020
С нами: 4 года 1 месяц

Сообщение #5 Tolly » 07.08.2022, 10:56

а как можно рандомно присвоить рекомендуемые товары для каждого товара?
пробовал таким образом
INSERT INTO ok_related_products (product_id, related_id, position) select DISTINCT id, (select id FROM `ok_products` where visible = 1 ORDER BY RAND() LIMIT 1), 4 from ok_products;
но на определенном этапе выбивает ошибку SQL
#1062 - Дублирующаяся запись '4455-3960' по ключу 'PRIMARY'

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #6 korshunov » 08.08.2022, 05:29

REPLACE INTO ok_related_products ...

Aleks
Aleks
Репутация: 56
Сообщения: 382
Зарегистрирован: 24.05.2021
С нами: 2 года 9 месяцев

Сообщение #7 Aleks » 09.08.2022, 13:57

А що це означає рандомно?
Що за новий термін у програмуванні?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #8 korshunov » 09.08.2022, 14:16

Aleks писал(а):А що це означає рандомно?
Що за новий термін у програмуванні?

Это "новоe" слово было старым уже тогда, когда многие сегодняшние web-спецы под стол пешком ходили...
См, например, https://3ty.ru/languages/pascal/random-v-pascal

Aleks
Aleks
Репутация: 56
Сообщения: 382
Зарегистрирован: 24.05.2021
С нами: 2 года 9 месяцев

Сообщение #9 Aleks » 11.08.2022, 09:17

То що це виходить? Щоб зрозуміти запит користувача, потрібно піднімати архів програм (і треба знати що саме Паскаль) і шукати визначення цього терміну.
Чи може простіше використовувати слово випадково?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #10 korshunov » 11.08.2022, 10:04

Выходит следующее:
1. Прежде чем делать заявления типа "Що за новий термін у програмуванні?", надо убедиться в том, что этот термин действительно новый.
2. Чтобы убедиться в том, что он новый, надо хоть немного знать историю программирования.
3. Данная ссылка намекает на то, что этот термин использовался еще в языке Pascal, который был создан полвека тому назад.
4. По-моему, все современные языки программирования (кроме особо экзотических) поддерживают генерацию случайных чисел. Попробуйте найти такой, для которого это не так...

Aleks
Aleks
Репутация: 56
Сообщения: 382
Зарегистрирован: 24.05.2021
С нами: 2 года 9 месяцев

Сообщение #11 Aleks » 19.08.2022, 15:36

Богатство славянских языков в большинстве случаев позволяет не искать иностранный синоним для точного выражения мысли.
Для обозначения случайности в современной славянской лексике предостаточно выражений, но прилагательное "рандомный" и однокоренные слова получили известность благодаря моде на употребление иностранных слов вперемешку с родными.
А во времена Паскаля этого слова в славянской лексике и в помине не было.
К сему: в узком кругу специалистов употребление этого слова оправдано. Но когда в печати , видении, в быту слово случайно заменяют на англицизм это уже не есть нехорошо
Берегите наш язык — это клад, это достояние, переданное нам нашими предшественниками!
Обращайтесь почтительно с этим могущественным орудием. Так сказал литературный классик.


Название раздела: Полезные решения для OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Полезные решения для OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 5 гостей