hulk Posted January 13, 2012 Share Posted January 13, 2012 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 More sharing options...
hulk Posted January 13, 2012 Author Share Posted January 13, 2012 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: Link to comment Share on other sites More sharing options...
hulk Posted January 16, 2012 Author Share Posted January 16, 2012 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now