MySQL группирует разные строки для создания групповых и простых продуктов - PullRequest
0 голосов
/ 10 января 2019

Я перемещаю продукты из одной системы в 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         |

Не могли бы вы помочь мне написать запрос для его достижения.

1 Ответ

0 голосов
/ 10 января 2019

Если иерархия имеет только два уровня, это вполне возможно сделать в MySQL 5.6, так что вы хороши как есть (если бы у нее было переменное количество уровней, вам понадобился бы MySQL 8.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 пусто в родительских строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...