создание комбинации со многими атрибутами товара в prestashop

У меня есть много атрибутов продукта, как это

  1. часть 1:
    • черный
    • загар
    • эспрессо
    • серый
    • флот
    • красный
  2. часть 2:
    • черный
    • загар
    • эспрессо
    • серый
    • флот
    • красный
  3. часть 3:
    • черный
    • загар
    • эспрессо
    • серый
    • флот
    • красный
  4. часть 4:
    • черный
    • загар
    • эспрессо
    • серый
    • флот
    • красный
  5. Единственный:
    • Натуральная кожа
    • резинка
    • creppy
    • кожа с половиной резины
    • кожа с подошвой
    • кристальная подошва
  6. размер:
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

Я пытался создать комбинации с генератором комбинаций, но это не помогает, запрос не выполняет все, может быть из-за истечения времени ожидания или что-то еще.

Структура базы данных:

- attribute_product :
id | name
1  | part_1
2  | part_2
3  | part_3
4  | part_4
5  | sole
6  | size

- sub_attribute_product :
id | id_atribute_product | name
1  |         1           | tan
2  |         1           | black
.. |        ...          | ...
4  |         5           | leather
5  |         5           | rubber
.. |        ...          | ...
7  |         6           | 39
.. |        ...          | ...

выход :

размер: 39, подошва: кожа, часть 1: загар, часть 2: загар, часть 3: черный, часть 4: загар

Дело в том, что я хочу создать автоматический запрос «create into ….» из более чем 5000 ++, возможно ли это?

0

Решение

Предполагая, что ваш стол sub_attribute_product имеет данные атрибута, как показано ниже.

id | id_atribute_product |   name
---------------------------------------------------
1        1                   black
2        1                   tan
3        1                   espresso
4        1                   grey
5        1                   navy
6        1                   red
7        2                   black
8        2                   tan
9        2                   espresso
10       2                   grey
11       2                   navy
12       2                   red
13       3                   black
14       3                   tan
15       3                   espresso
16       3                   grey
17       3                   navy
18       3                   red
19       4                   black
20       4                   tan
21       4                   espresso
22       4                   grey
23       4                   navy
24       4                   red
25       5                   Leather
26       5                   rubber
27       5                   creppy
28       5                   leather with half rubber
29       5                   leather with lug sole
30       5                   cristy sole
31       6                   39
32       6                   40
33       6                   41
34       6                   42
35       6                   43
36       6                   44
37       6                   45

Вы можете извлекать строки каждого атрибута одну за другой в под-таблицах и объединять все, как показано ниже

SELECT concat('size: ',t6.name,', sole: ',t5.name,', part1: ',t1.name,', part2: ',t2.name,', part3: ',t3.name,', part4: ',t4.name) AS RESULT
FROM
(SELECT *
FROM table2 t2
WHERE t2.id_attrib = 1) t1
CROSS JOIN
(SELECT *
FROM table2 t2
WHERE t2.id_attrib = 2) t2
CROSS JOIN
(SELECT *
FROM table2 t2
WHERE t2.id_attrib = 3) t3
CROSS JOIN
(SELECT *
FROM table2 t2
WHERE t2.id_attrib = 4) t4
CROSS JOIN
(SELECT *
FROM table2 t2
WHERE t2.id_attrib = 5) t5
CROSS JOIN
(SELECT *
FROM table2 t2
WHERE t2.id_attrib = 6) t6;

Приведенный выше запрос сгенерирует 6*6*6*6*6*7 = 54432 комбинации, как показано ниже. запрос действителен для mySQL, Если вы используете другой rdbms Вы должны вероятно настроить это, например. добавлять AS ключевое слово или использование || или же + вместо concat и т.п.

Result
----------------------------------------------------------------------------------
size: 39, sole: Leather , part1: black, part2: black, part3: black, part4: black
size: 39, sole: Leather , part1: tan, part2: black, part3: black, part4: black
size: 39, sole: Leather , part1: espresso, part2: black, part3: black, part4: black
size: 39, sole: Leather , part1: grey, part2: black, part3: black, part4: black
size: 39, sole: Leather , part1: navy, part2: black, part3: black, part4: black
size: 39, sole: Leather , part1: red, part2: black, part3: black, part4: black
size: 39, sole: Leather , part1: black, part2: tan, part3: black, part4: black
size: 39, sole: Leather , part1: tan, part2: tan, part3: black, part4: black
size: 39, sole: Leather , part1: espresso, part2: tan, part3: black, part4: black
size: 39, sole: Leather , part1: grey, part2: tan, part3: black, part4: black
size: 39, sole: Leather , part1: navy, part2: tan, part3: black, part4: black
.....................
.....................and so on

Вы можете проверить демо Вот

Надеюсь, это поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector