Jump to content

récupérer liste des produits avec déclinaisons en BO


Recommended Posts

Bonjour

je développe un module d'export des produits avec leurs déclinaisons mais j'ai eu un petit problème :

j'ai réussi a récupérer la liste des produits avec déclinaisons ( a l’aide d'une requête faite a la main) mais avec des redondance c'est a dire pour un produit avec 5 déclinaisons je récupère 5 lignes et par suit mon fichier csv devient volumineux et le temps d'exécution de la requête augmente.

je suis pas assez doué en php

Link to comment
Share on other sites

up svp

je voulais avoir un array dans se sens là :

id_product,nom produit,prix déc1,prix déc2,prix déc3,prix déc4,qté déc1,qté déc2,qté déc3,qté déc4;

après avoir récupérer la liste des produits, je ne sais pas comment récupérer les déclin et leurs quantités et prix dans une seule linge pour chaque produit :unsure: :unsure: :unsure:

Link to comment
Share on other sites

voici ma requête sql :

SELECT p.id_product,p.reference,pl.name as nom,(IFNULL((SELECT SUM(pa.quantity) FROM product_attribute pa WHERE pa.id_product = p.id_product), 0)) as quantite,
ROUND((SELECT ((p.`price` * IF(19.6,((100 + (19.6))/100),1) - IF(`reduction_from` = `reduction_to`, IF(`reduction_price` > 0, `reduction_price`, (p.`price` * IF(19.6,((100 + (19.6))/100),1) * `reduction_percent` / 100)),0))+pa.price) FROM product_attribute pa WHERE pa.id_product_attribute =pac.id_product_attribute AND pac.id_attribute =21) ,2) as prix1,
ROUND((SELECT ((p.`price` * IF(19.6,((100 + (19.6))/100),1) - IF(`reduction_from` = `reduction_to`, IF(`reduction_price` > 0, `reduction_price`, (p.`price` * IF(19.6,((100 + (19.6))/100),1) * `reduction_percent` / 100)),0))+pa.price) FROM product_attribute pa WHERE pa.id_product_attribute =pac.id_product_attribute AND pac.id_attribute =22) ,2) as prix2,
ROUND((SELECT ((p.`price` * IF(19.6,((100 + (19.6))/100),1) - IF(`reduction_from` = `reduction_to`, IF(`reduction_price` > 0, `reduction_price`, (p.`price` * IF(19.6,((100 + (19.6))/100),1) * `reduction_percent` / 100)),0))+pa.price) FROM product_attribute pa WHERE pa.id_product_attribute =pac.id_product_attribute AND pac.id_attribute =23) ,2) as prix3,
(SELECT pa.quantity FROM product_attribute pa WHERE pa.id_product_attribute =pac.id_product_attribute AND pac.id_attribute =21) as Qte1,
(SELECT pa.quantity FROM product_attribute pa WHERE pa.id_product_attribute =pac.id_product_attribute AND pac.id_attribute =22) as Qte2,
(SELECT pa.quantity FROM product_attribute pa WHERE pa.id_product_attribute =pac.id_product_attribute AND pac.id_attribute =23) as Qte3
FROM `product_attribute` pa
LEFT JOIN product_lang pl ON (pa.id_product = pl.id_product)
LEFT JOIN product p ON (p.id_product = pl.id_product)
LEFT JOIN `product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
LEFT JOIN `attribute` a ON a.`id_attribute` = pac.`id_attribute`
LEFT JOIN `attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
LEFT JOIN `attribute_lang` al ON a.`id_attribute` = al.`id_attribute`
LEFT JOIN `attribute_group_lang` agl ON ag.`id_attribute_group` = agl.`id_attribute_group`
WHERE pa.`id_product` IN (SELECT p.id_product
FROM product p
GROUP BY p.id_product)
AND al.`id_lang` = 2 AND agl.`id_lang` = 2 AND pl.`id_lang` = 2
ORDER BY pa.`id_product_attribute`

toute autre idée est la bienvenue.

merci

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...