我有 3 个表:
- 产品,包含 - id、名称和描述
- 属性,包含——id、name
prod_attri_rel,包含 - id、prod_id、attri_id 和 value
- 产品看起来像:
1 | test | just a description for test 2 | test2| just another description
- 属性看起来像:
1 | height 3 | length 2 | width 4 | power 5 | id
- prod_attri_rel 看起来像:
1 | 1 | 1 | 2 2 | 1 | 2 | 25 3 | 1 | 3 | 20 4 | 2 | 1 | 2 5 | 2 | 2 | 25 6 | 2 | 3 | 20 7 | 2 | 4 | UBEC 9 | 2 | 5 | BC2212-850
查看https://dba.stackexchange.com/a/33307/48727和https://stackoverflow.com/a/695860/1820180后
现在我想得到这个结果:
id | name | height | width | length | maybe other attr | so on and so forth
1| test | 2 | 25 | 20 | ...
当我使用以下查询时:
SELECT p.id, p.name , par.value, a.name FROM products p
JOIN prod_attri_rel par on p.id = par.prod_id
JOIN attributes a on par.attri_id = a.id
我得到:
id | name | value| name
1 | test | 2 | height
1 | test | 25 | width
1 | test | 20 | length
然后当我尝试时:
SELECT p.id, p.name , group_concat( par.value ), group_concat( a.name ) FROM products p
JOIN prod_attri_rel par on p.id = par.prod_id
JOIN attributes a on par.attri_id = a.id GROUP BY p.name
我得到了更好的结果,但不是真的:
id | name | value | name
1 | test | 25,2,20 | width,height,length
最后我找到了这个https://stackoverflow.com/a/10926106/1820180但我对它的理解还不足以适应我的问题。
在此问题上的任何帮助将不胜感激,即使它正在寻找另一种方法或使其起作用。
用途:这是一个RC玩具不同部件的数据库,比如电机,电调的轮子,螺旋桨等等,都有不同的属性,但是所有的电机都具有相同的属性,所有的轮子都具有相同的属性。