Я не собираюсь публиковать весь SQL-запрос, потому что слишком утомительно пытаться вытащить данные из Magento вручную через базу данных, но я скажу, что вы на правильном пути.Чтобы сократить количество объединений для такого рода вещей, я извлекаю свои attribute_ids из таблицы eav и использую их напрямую.Это означает, что мой запрос будет работать только на моей установке Magento, но это не проблема для меня.
select attribute_code, attribute_id, backend_type from eav_attribute
where entity_type_id = (select entity_type_id from eav_entity_type where entity_type_code = 'catalog_product')
and attribute_code in ('name', 'url_path', 'price', 'image', 'description', 'manufacturer');
Выход:
+----------------+--------------+--------------+
| attribute_code | attribute_id | backend_type |
+----------------+--------------+--------------+
| description | 61 | text |
| image | 74 | varchar |
| manufacturer | 70 | int |
| name | 60 | varchar |
| price | 64 | decimal |
| url_path | 87 | varchar |
+----------------+--------------+--------------+
Теперь вы готовы к скуке!Для каждого кода атрибута присоединитесь к бэкэнд-таблице (catalog_product_entity_$BACKEND_TYPE
) по указанному вами идентификатору атрибута.Для меня это превратит запрос sku / name / id (ваш запрос фактически не нуждается в объединении с продуктами, поскольку вы используете entity_id для объединения ...) в:
select p.sku, p.entity_id, n.value name
from catalog_product_entity p
join catalog_product_entity_varchar n on n.entity_id = p.entity_id
where n.attribute_id = 60;
Продолжайте добавлять новые операторы join-Statement | where-clause | select-clause до тех пор, пока у вас не появятся все соединения, которые вы хотели изначально.
Тем не менее, Джонатан прав, что использовать среду Magento для управления этими данными будет гораздо прощечем делать это вручную через базу данных.Если у вас нет огромного количества продуктов, которые вам нужно загрузить сразу (обратите внимание, что там есть два предположения, и вы можете работать над сокращением любого из них), было бы гораздо надежнее использовать среду.
Надеюсь, это поможет!
Спасибо, Джо