Non pubblicherò l'intera query SQL perché è troppo noioso cercare di estrarre manualmente i dati da Magento tramite il database, ma dirò che sei sulla strada giusta. Per ridurre il numero di join per questo genere di cose, recupero i miei attributi_id dalla tabella eav e li uso direttamente. Ciò significa che la mia query funzionerà solo su mio installare Magento, ma per me non è stato un problema.
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');
Rendimento:
+----------------+--------------+--------------+
| 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 |
+----------------+--------------+--------------+
Ora sei pronto per la noia! Per ogni codice attributo, unisciti alla tabella di backend (catalog_product_entity_$BACKEND_TYPE
) sull'ID attributo fornito. Per me, questo trasformerebbe una query sku/name/id (la tua query in realtà non ha bisogno di unirsi a prodotti, poiché usi entity_id per fare il join...) in:
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;
Continua ad aggiungere nuovi set di clausole di join|where-clause|select-clause finché non avrai tutti i join che volevi originariamente.
Detto questo, Jonathan ha ragione sul fatto che l'utilizzo del framework Magento per gestire questi dati sarebbe molto più semplice che farlo manualmente tramite il database. A meno che tu non abbia un numero estremo di prodotti che devi caricare tutti in una volta (nota che ci sono due presupposti e puoi lavorare per ridurli), sarebbe molto più robusto usare il framework.
Spero di esserti stato d'aiuto!
Grazie, Joe