Exportar prestashop sql manager

Tencru

Buenos días, estoy tratando de exportar todos los productos de mi página web (prestashop) a un .csv, el tema es que estoy haciendo esta consulta:

SELECT m.name AS manufacturer, p.id_product, pl.name, GROUP_CONCAT(DISTINCT(al.name) SEPARATOR ", ") AS combinations,
GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") AS categories, p.price, pa.price, p.id_tax_rules_group, p.wholesale_price,
p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, s.quantity,
pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite,
pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition,
p.id_shop_default
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_manufacturer m ON (p.id_manufacturer = m.id_manufacturer)
LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
LEFT JOIN ps_stock_available s ON (p.id_product = s.id_product)
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)
LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product)
LEFT JOIN ps_product_attribute_combination pac ON (pac.id_product_attribute = pa.id_product_attribute)
LEFT JOIN ps_attribute_lang al ON (al.id_attribute = pac.id_attribute)
WHERE pl.id_lang = 1
AND cl.id_lang = 1
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY pac.id_product_attribute

Pero me exporta muy pocos productos, sin combinaciones tengo unos 200 productos, con combinaciones debo tener 240 productos pero me exporta solo 90 (combinaciones incluidas)

He buscando tanto en español como ingles pero no encuentro solución.

babri

Por qué no usas un módulo para exportarlo?

https://www.prestashop.com/forums/topic/37900-free-module-products-export-module-v261-updated-05042018/

1 respuesta
Tencru

#2 No sirve para ps 1.7

1 respuesta
voignar

#3

CHANGE LOG

UPDATED v2.6.0 (05/04/2018)

  • Fix for 1.7.3.0

UPDATED v2.6.0 (13/08/2017)

  • Fix for 1.7+
  • Fix Supplier Reference
1 respuesta
Tencru

#4 Lo he probado pero no saca los productos combinados :(

Encofrado

Entonces yo probaría por mandarles un correo/ticket a los responsables del módulo, contándoles tu situación, a ver si te pueden echar un cable 😉.

1 respuesta
Tencru

#6 Que va, la opción la tiene el módulo pero de pago, por eso estoy haciendolo a mano.

Con la consulta que puse arriba se puede sacar todo lo que necesito pero no saca todos los productos, solo 90 y no sé por que.

Soltrac

Obviamente te saca menos porque habrá algún problema en un JOIN. No conocemos la estructura de prestashop, pero deberías empezar desde abajo añadiendo poco a poco tablas a los join o los distinct q tienes por ahí, es imposible saberlo sin tener acceso a los datos.

Por ejemplo, empieza solo sacando ps_product, mira cuantos productos te saca y de ahí ve subiendo.

1 respuesta
Tencru

#8 Disculpa si te he entendido bien dices que quite

SELECT m.name AS manufacturer, p.id_product, pl.name, GROUP_CONCAT(DISTINCT(al.name) SEPARATOR ", ") AS combinations,
GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") AS categories, p.price, pa.price, p.id_tax_rules_group, p.wholesale_price,
p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, s.quantity,
pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite,
pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition,
p.id_shop_default
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
LEFT JOIN ps_stock_available s ON (p.id_product = s.id_product)
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)
LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product)
[b]LEFT JOIN ps_product_attribute_combination pac ON (pac.id_product_attribute = pa.id_product_attribute)[/b]
LEFT JOIN ps_attribute_lang al ON (al.id_attribute = pac.id_attribute)
WHERE pl.id_lang = 1
AND cl.id_lang = 1
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY pac.id_product_attribute

LEFT JOIN ps_product_attribute_combination pac ON (pac.id_product_attribute = pa.id_product_attribute)

He probado a quitar todos los join 1 a 1 y no me saca nada de información directamente.

Soltrac

Q significa q no te saca informacion directamente? Digo yo q la tabla ps_product te devolverá información de los productos....

Me suena a copy pasteo de SQL y q no lo has hecho tú y entonces esto queda fuera totalmente del foro de dev

RaymaN

No es buena idea utilizar cláusulas WHERE de tablas que estás cogiendo con un LEFT JOIN, deberían ir a continuación del ON correspondiente.

Usuarios habituales

  • RaymaN
  • Soltrac
  • Tencru
  • Encofrado
  • voignar
  • babri