Jump to content

Problema con base de datos Prestashop


churu077

Recommended Posts

Hola a todos, tengo un problema relacionado con la base de datos de prestashop, el tema es que necesito hacer una sentencia sql que me muestre campos de varias tablas como nombre, precio, cantidad, y lo mas importante y donde tengo el error que me muestre la categoría de cada producto.

Mi consulta sql es la siguiente:

SELECT ps_product.id_product, ps_product_lang.description, description_short, ps_product_lang.name, price, quantity, ps_category_lang.name AS categoria
FROM ps_product
INNER JOIN (
ps_product_lang
INNER JOIN ps_category_lang ON ps_product_lang.id_lang = ps_category_lang.id_lang
) ON ps_product.id_product = ps_product_lang.id_product

Esto me muestra todos los productos tantas veces como categorías tengo, me explico no asigna a cada articulo su categoría, sino que me repite la categoría tantas veces como productos tengo y eso me crea una lista inmensa de artículos repetidos. Yo lo que quisiese es que para cada articulo mostrase su categoría correspondiente, pero soy un poco inexperto en este tema y no le encuentro solución. Si alguien me pudiese dar aunque solo fuese una orientación de como solucionar esto me seria de gran ayuda.

Gracias de antemano!!!

Link to comment
Share on other sites

Gracias por responder con tu solucion la sentencia sql se queda de la siguiente manera:

SELECT ps_product.id_product, ps_product_lang.description, description_short, ps_product_lang.name, price, quantity, ps_category_lang.name AS categoria
FROM ps_product
INNER JOIN (
ps_product_lang
INNER JOIN ps_category_lang ON ps_product_lang.id_lang = ps_category_lang.id_lang
) ON ps_product.id_product = ps_product_lang.id_product
GROUP BY ps_product.id_product

Pero asi lo que me pasa es que no me repite los articulos tantas veces como categorias tenga, pero me muestra todos los articulos con la categoria asignada "home", y yo lo que quiero es que para cada producto me muestre su categoria correspondiente.

Gracias por la respuesta!!! Pero sigo necesitando ayuda

Link to comment
Share on other sites

Gracias por la contestacion me esta siendo de gran ayuda, haciendolo asi me sale el id de cada categoria correspondiente a cada producto, lo cual me lo hace bien, pero yo lo que necesito es el nombre de la categoria, se me ocurre que tendre que utilizar otro INNER JOIN pera enlazar la tabla ps_category_producy y la tabla ps_category_lang que es donde estan los nombres de las categorias, pero no se como incorporar otro INNER JOIN a la sentencia que de momento esta asi:

SELECT ps_product.id_product, ps_product_lang.description, description_short, ps_product_lang.name, price, quantity, ps_category_product.id_category AS categoria
FROM ps_category_product
INNER JOIN (
ps_product_lang
INNER JOIN ps_product ON ps_product_lang.id_product = ps_product.id_product
) ON ps_category_product.id_product = ps_product_lang.id_product
GROUP BY ps_product.id_product

De esta manera me muestra el id de cada categoria correspondiente a cada producto, pero yo quiero el nombre, si me dieseis una ultima ayuda para sacarlo me sacariais de un gran apuro.

Gracias de antemano de nuevo!!

Un saludo a todos!!

Link to comment
Share on other sites

es que el lenguaje esta en otra table, es el category_lang, que contiene los nombres
debes hacer un join a esta table con el que tiene el id de categoria.,
por ejemplo
cl.`name` AS category_default

y

LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($id_lang).')

el id lang es para que tome el idioma del usuario

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...