Diard Brandon Posted July 28, 2021 Share Posted July 28, 2021 Bonjour, Bonsoir, Je bloque sur une requête que je n'arrive pas à coder car au dessus de mes capacités... Merci d'avance de votre aide. J'aimerai avoir une requête SQL avec la référence des produits, son nom, sa quantité vendu et son prix d'achat hors taxe ceci sur une période donné. Ensuite j'ai la même requête mais avec un ordre par catégorie. Je vous remercie d'avance de votre aide car je suis désespéré actuellement. Brandon DIARD. Link to comment Share on other sites More sharing options...
Eolia Posted July 28, 2021 Share Posted July 28, 2021 C'est natif dans votre tableau de bord en fait^^ 1 Link to comment Share on other sites More sharing options...
Diard Brandon Posted July 29, 2021 Author Share Posted July 29, 2021 (edited) 22 hours ago, Eolia said: C'est natif dans votre tableau de bord en fait^^ Merci beaucoup de votre réponse, cependant les statistiques affichés ne sont pas celles que je veux. Il me manque son prix d'achat hors taxe. J'entends par là, le coût hors taxe de ma matière première. Je vous remercie d'avance de votre aide. Brandon DIARD. Edited July 29, 2021 by Diard Brandon Ajout de la citation (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted July 29, 2021 Share Posted July 29, 2021 Ben ajoutez vos données à la requête existante dans le module dashproducts^^ $products = Db::getInstance()->ExecuteS( ' SELECT product_id, product_name, SUM(product_quantity) as total, p.price as price, pa.price as price_attribute, SUM(total_price_tax_excl / conversion_rate) as sales, SUM(product_quantity * purchase_supplier_price / conversion_rate) as expenses FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = product_id LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.id_product_attribute = od.product_attribute_id WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND valid = 1 '.Shop::addSqlRestriction(false, 'o').' GROUP BY product_id, product_attribute_id ORDER BY total DESC LIMIT '.(int)Configuration::get('DASHPRODUCT_NBR_SHOW_BEST_SELLER', 10) ); 1 Link to comment Share on other sites More sharing options...
Diard Brandon Posted August 10, 2021 Author Share Posted August 10, 2021 On 7/29/2021 at 3:44 PM, Eolia said: Ben ajoutez vos données à la requête existante dans le module dashproducts^^ $products = Db::getInstance()->ExecuteS( ' SELECT product_id, product_name, SUM(product_quantity) as total, p.price as price, pa.price as price_attribute, SUM(total_price_tax_excl / conversion_rate) as sales, SUM(product_quantity * purchase_supplier_price / conversion_rate) as expenses FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = product_id LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.id_product_attribute = od.product_attribute_id WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" AND valid = 1 '.Shop::addSqlRestriction(false, 'o').' GROUP BY product_id, product_attribute_id ORDER BY total DESC LIMIT '.(int)Configuration::get('DASHPRODUCT_NBR_SHOW_BEST_SELLER', 10) ); Je réponds avec un peu de retard (désolé !). Merci beaucoup, je vais arriver à faire quelque chose avec ça ! Link to comment Share on other sites More sharing options...
Asu34 Posted March 21 Share Posted March 21 (edited) Bonjour à tous, je suis intéressé par ces meilleures ventes et stats. Je trouve, sauf erreur de ma part que celle affichée dans Statistiques / Meilleures ventes est plus complète. La requête de ce module statsbestproducts est celle-ci : SELECT SQL_CALC_FOUND_ROWS p.reference, p.id_product, pl.name, ROUND(AVG(od.product_price / o.conversion_rate), 2) as avgPriceSold, IFNULL(stock.quantity, 0) as quantity, IFNULL(SUM(od.product_quantity), 0) AS totalQuantitySold, ROUND(IFNULL(IFNULL(SUM(od.product_quantity), 0) / (1 + LEAST(TO_DAYS('.$array_date_between[1].'), TO_DAYS(NOW())) - GREATEST(TO_DAYS('.$array_date_between[0].'), TO_DAYS(product_shop.date_add))), 0), 2) as averageQuantitySold, ROUND(IFNULL(SUM((od.product_price * od.product_quantity) / o.conversion_rate), 0), 2) AS totalPriceSold, ( SELECT IFNULL(SUM(pv.counter), 0) FROM '._DB_PREFIX_.'page pa LEFT JOIN '._DB_PREFIX_.'page_viewed pv ON pa.id_page = pv.id_page LEFT JOIN '._DB_PREFIX_.'date_range dr ON pv.id_date_range = dr.id_date_range WHERE pa.id_object = p.id_product AND pa.id_page_type = '.(int)Page::getPageTypeByName('product').' AND dr.time_start BETWEEN '.$date_between.' AND dr.time_end BETWEEN '.$date_between.' ) AS totalPageViewed, product_shop.active FROM '._DB_PREFIX_.'product p '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)$this->getLang().' '.Shop::addSqlRestrictionOnLang('pl').') LEFT JOIN '._DB_PREFIX_.'order_detail od ON od.product_id = p.id_product LEFT JOIN '._DB_PREFIX_.'orders o ON od.id_order = o.id_order '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' '.Product::sqlStock('p', 0).' WHERE o.valid = 1 AND o.invoice_date BETWEEN '.$date_between.' GROUP BY od.product_id Est-ce que vous auriez une idée de comment je pourrais rajouter à cette requête la date de la 1ère vente ainsi qu'également la date de la dernière ? Merci par avance pour votre retour, Edited March 21 by Asu34 (see edit history) 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