在prestashop中生成许多产品属性的组合

时间:2017-09-05 03:59:39

标签: php sql e-commerce prestashop

我有很多这样的产品属性

  
      
  1. 第1部分:      
        
    •   
    • 黄褐色
    •   
    • 咖啡
    •   
    • 灰色
    •   
    • 海军
    •   
    • 红色
    •   
  2.   
  3. 第2部分:      
        
    •   
    • 黄褐色
    •   
    • 咖啡
    •   
    • 灰色
    •   
    • 海军
    •   
    • 红色
    •   
  4.   
  5. 第3部分:      
        
    •   
    • 黄褐色
    •   
    • 咖啡
    •   
    • 灰色
    •   
    • 海军
    •   
    • 红色
    •   
  6.   
  7. 第4部分:      
        
    •   
    • 黄褐色
    •   
    • 咖啡
    •   
    • 灰色
    •   
    • 海军
    •   
    • 红色
    •   
  8.   
  9. 鞋底:      
        
    • 皮革
    •   
    • 橡胶
    •   
    • creppy
    •   
    • 半橡胶皮革
    •   
    • 带有鞋底的皮革
    •   
    • cristy sole
    •   
  10.   
  11. 尺寸:      
        
    • 39
    •   
    • 40
    •   
    • 41
    •   
    • 42
    •   
    • 43
    •   
    • 44
    •   
    • 45
    •   
  12.   

我尝试使用组合生成器创建组合,但这没有帮助,查询不会运行所有内容,可能是由于超时或其他原因。

数据库struktur:

- 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部分:棕褐色

关键是我想创建一个自动查询"创建成...."超过5000 ++,有可能吗?

1 个答案:

答案 0 :(得分:0)

假设您的表格values-ar的属性数据如下所示。

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

您可以查看演示here

希望这会有所帮助。