mysql将不同的行分组以创建组和简单产品

gab6jxml  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(298)

我正在将产品从一个系统迁移到magento,旧系统中存在组/子产品关系,我必须在magento系统中进行维护
当前的表结构:

[id],   [sku],  [name],         [parent id]
202182 |240330 |parent product |
202183 |240331 |child product 1|[202182][Parent-Product-240330]
202184 |240332 |child product 2|[202182][Parent-Product-240330]

我想要达到的目标:

[id],   [sku],   [name],         [product_type], [associated_sku]
202182 |240330 | parent product |grouped        |240331=0.0000,240332=0.0000
202183 |240331 | child product 1|simple         |
202184 |240332 | child product 2|simple         |

你能帮我写一个查询来实现吗。

9rbhqvlz

9rbhqvlz1#

如果层次结构只有两个级别,那么在MySQL5.6中完全有可能做到这一点,这样您就可以做得很好(如果层次结构的级别数可变,那么您就需要MySQL8.x)。
我将使用的查询是:

select 
  p.id,
  p.sku,
  p.name,
  'grouped' as product_type,
  group_concat (concat(c.id, '=0.0000') order by c.id) as associated_sku
from product p
join product c on c.parent_id = p.id
group by p.id, p.sku, p.name
union all
select
  id,
  sku,
  name,
  'simple' as product_type,
  null as associated_sku
from product
where parent_id is not null

注意:此查询假定 parent_id 父行为空。

相关问题