我在两个表格中获得了数据:
表产品
ID | title
1 | T-shirt
2 | Pants
...
和表格详情
productID | key | value
1 | color | green
1 | size | M
1 | size | L
2 | color | white
2 | color | black
2 | brand | n/a
...
因此,表中的每个产品都有很多细节。我想编写SQL给我结果:
ID | title | color | size | brand
1 | T-shirt | green | M,L |
2 | Pants | white,black | | n/a
现在我的第一个SQL是:
SELECT * FROM products;
然后每次调用while循环:
SELECT * FROM details WHERE productID={id}
然后将数据合并在一起。可能有一个简单的方法吗? 谢谢!
编辑: 数据导入到mysql,我不知道每个产品的所有细节(如果我知道,我会在产品表中添加一些额外的列)。细节每天都在变化。
答案 0 :(得分:2)
我会使用条件聚合和group_concat()
:
select p.id, p.title,
group_concat(case when key = 'color' then value end) as colors,
group_concat(case when key = 'size' then value end) as sizes,
group_concat(case when key = 'brand' then value end) as brands
from products p join
details d
on p.id = d.productid
group by p.id, p.title;
答案 1 :(得分:-1)
据我所知,你想要一个包含两个表数据的结果表的问题:
select products.ID, products.title, details.*
from products
inner join details
on details.productID = products.ID;