Получение отчета о товарах через запрос к базе данных (EAV) - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь узнать больше о EAV, и я проводил некоторые тесты в базе данных с образцами magento 2.

Я просто хочу получить идентификатор продукта и описание продукта, но есть несовпадение с общим количеством продуктов в таблице catalog_product_entity и таблице catalog_product_entity_text:

В таблице catalog_product_entity имеется 2046 товаров:

my

Если я использую следующий запрос, я получаю 2052 результата:

SELECT product.entity_id as "Description",description.value FROM catalog_product_entity_text description,catalog_product_entity product where product.entity_id = description.entity_id ORDER BY product.entity_id

enter image description here

1 Ответ

1 голос
/ 04 февраля 2020

Я предполагаю, что есть несколько случаев, когда entity_id соответствует более чем одной строке в текстовой таблице. Возможно, может быть текстовый атрибут, отличный от описания?

Попробуйте это:

SELECT product.entity_id as Product_id,
  COUNT(*) AS count,
  GROUP_CONCAT(description.value) AS Description
FROM catalog_product_entity_text description
LEFT OUTER JOIN catalog_product_entity product ON product.entity_id = description.entity_id 
GROUP BY product.entity_id
ORDER BY product.entity_id

Я не знаком с таблицами EAV Magento, но я предполагаю, что в таблице должен быть столбец для атрибута. идентификатор, а также entity_id. Возможно, вам придется выполнить фильтрацию по типу атрибута, если вам просто нужно описание, а не другие текстовые атрибуты.

PS: я адаптировал ваш запрос для использования современного синтаксиса JOIN. Не стоит использовать соединения в стиле запятых, они вышли из моды в 1992 году.

...