Jump to content

Générer un détail du contenu des commandes via le Gestionnaire SQL


Recommended Posts

Bonjour,

J'ai établi une requête SQL pour ma boutique afin d'obtenir le détail du contenu de mes commandes.

Elle fonctionne bien à ceci près qu'en vérifiant les quantités obtenues, il semble que des ajouts se fassent.

Exemple :

- 3 commandes contiennent le même article vendu 2 fois (à chaque commande) => quantités réellement vendues = 6

- quantités retournées par ma requête = 9 <=> il semble qu'au 6 quantités réellement vendues, ma requête ajoute 1 quantité par vente réalisée ; or, comme j'ai réalisé 3 ventes, alors il ajoute 3 à 6.

SELECT
o.`id_order` as "Commande",
o.`payment`as "Paiement",
p.`reference` as "Ref. produit",
pl.`name` as "Nom produit",
p.`wholesale_price` as "Prix d'achat",
od.`product_price` as "PU HT",
od.`reduction_percent` as "Réduc %",
(od.`reduction_amount`/1.2) as "Réduc HT",
od.`unit_price_tax_excl` as "Prix après remise HT",
od.`product_quantity` as "Qtt",
od.`total_price_tax_excl` as "Total HT",
o.`invoice_date` as "Date facturation"
FROM `ps_orders` o
LEFT JOIN `ps_order_detail` od USING(`id_order`)
LEFT JOIN `ps_customer` c USING (`id_customer`)
LEFT JOIN `ps_product` p ON (od.`product_id` = p.`id_product`)
INNER JOIN `ps_product_lang` pl ON (pl.`id_product` = p.`id_product`)
WHERE o.`invoice_date` > "2021-07-08 00:00:01"
AND o.`invoice_date` < "2021-07-09 23:59:59"
AND pl.`id_lang` = 2

 

Quelqu'un saurait m'aider à dépatouiller ça ?

Merci.

Yomguaille

Link to comment
Share on other sites

Remplacer vos 2 USING (using sert à définir l'index à privilégier en remplacement de celui décidé par l'optimiseur) par la jointure ON pertinente

INNER JOIN `ps_order_detail` od on od.`id_order` = o.id_order
INNER JOIN `ps_customer` c on c.`id_customer` = c.id_customer

 

Link to comment
Share on other sites

Merci doekia mais je génère une erreur 500 avec cette modification.

Voici ma requête après la modification que tu suggères :

SELECT
o.`id_order` as "Commande",
o.`payment`as "Paiement",
p.`reference` as "Ref. produit",
pl.`name` as "Nom produit",
p.`wholesale_price` as "Prix d'achat",
od.`product_price` as "PU HT",
od.`reduction_percent` as "Réduc %",
(od.`reduction_amount`/1.2) as "Réduc HT",
od.`unit_price_tax_excl` as "Prix après remise HT",
od.`product_quantity` as "Qtt",
od.`total_price_tax_excl` as "Total HT",
o.`invoice_date` as "Date facturation"
FROM `ps_orders` o
INNER JOIN `ps_order_detail` od on od.`id_order` = o.id_order
INNER JOIN `ps_customer` c on c.`id_customer` = c.id_customer
LEFT JOIN `ps_product` p ON (od.`product_id` = p.`id_product`)
INNER JOIN `ps_product_lang` pl ON (pl.`id_product` = p.`id_product`)
WHERE o.`invoice_date` > "2021-07-08 00:00:01"
AND o.`invoice_date` < "2021-07-09 23:59:59"
AND pl.`id_lang` = 2

Yomguaille

Link to comment
Share on other sites

Bonjour doekia,

J'ai tapé la modification à la main. PrestaShop me retourne une nouvelle erreur

Type error: Argument 1 passed to PrestaShop\PrestaShop\Adapter\SqlManager\SqlQueryValidator::getFromKeywordError() must be of the type array, bool given, called in /var/www/prod/src/Adapter/SqlManager/SqlQueryValidator.php on line 88

[Symfony\Component\Debug\Exception\FatalThrowableError 0]

Vois-tu ce que ça peut être ? Encore merci pour ton aide.

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...