我有很多这样的产品属性
- 第1部分:
- 黑
- 黄褐色
- 咖啡
- 灰色
- 海军
- 红色
- 第2部分:
- 黑
- 黄褐色
- 咖啡
- 灰色
- 海军
- 红色
- 第3部分:
- 黑
- 黄褐色
- 咖啡
- 灰色
- 海军
- 红色
- 第4部分:
- 黑
- 黄褐色
- 咖啡
- 灰色
- 海军
- 红色
- 鞋底:
- 皮革
- 橡胶
- creppy
- 半橡胶皮革
- 带有鞋底的皮革
- cristy sole
- 尺寸:
醇>
- 39
- 40
- 41
- 42
- 43
- 44
- 45
我尝试使用组合生成器创建组合,但这没有帮助,查询不会运行所有内容,可能是由于超时或其他原因。
数据库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 ++,有可能吗?
答案 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
希望这会有所帮助。