我有许多像这样的产品属性
- 第1部分:
- 黑色
- tan
- 浓缩咖啡
- 灰色
- 海军
- 红色
- 第2部分:
- 黑色
- tan
- 浓缩咖啡
- 灰色
- 海军
- 红色
- 第3部分:
- 黑色
- tan
- 浓缩咖啡
- 灰色
- 海军
- 红色
- 第4部分:
- 黑色
- tan
- 浓缩咖啡
- 灰色
- 海军
- 红色
- 唯一:
- 皮革
- 橡胶
- creppy
- 一半橡胶的皮革
- 带有鞋底的皮革
- cristy Sole
- 大小:
- 39
- 40
- 41
- 42
- 43
- 44
- 45
我尝试与组合生成器创建组合,但这无济于事,查询并不能运行所有内容,可能是由于超时或任何内容所致。
struche数据库:
- 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,唯一:皮革,part1:tan,part2:tan,part3:黑色,part4:tan
重点我要创建一个自动查询"创建为...."超过5000 ,是否可能?
假设您的表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
您可以在此处检查演示
希望这会有所帮助。