Jump to content

Requête SQL Commande


Recommended Posts

Version PS : 1.7.6

Préfixe des tables : pre2162_

Bonjour à toutes et à tous,

J'ai 3 questions :

  • Je souhaite exporter la liste des commandes du mois avec comme champs le Numéro de facture (#FA0000XX/2020) / Nom du client / Nom du produit / Référence du produit / Quantité / Total HT / Total TTC / Statut du produit / Pays / Date d'achat. Seulement voilà, J'arrive à afficher tous les champs, mais lorsque je souhaite sortir le Nom du produit, la Référence du produit et la Quantité de la table pre2162_order_detail, ça plante, aucun résultat ne sort. C'est sans doute une erreur de jointure, mais j'ai beau retourner le problème dans tous les sens, c'est un manque de logique de ma part, et je ne parviens pas à trouver la solution. Je précise que je suis parti de la requête SQL d'export des commandes de Prestashop. Voici ma requête SQL à l'heure actuelle :
SELECT

	a.`product_name` AS `Produit`,
	a.`product_reference` AS `Part number`,
	a.`product_quantity` AS `Quantité`,
	`total_paid_tax_excl` AS `Total HT`, 
	`total_paid_tax_incl`AS `Total TTC`, 
	a.`date_add` AS `Date achat`, 
	CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `Client`,
	osl.`name` AS `Statut`,
	IF((SELECT so.id_order FROM `pre2162_orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) AS `Compte client 	(1 = Oui, 0 = Non)`,
	country_lang.name AS `Pays`
    
FROM pre2162_orders a

	LEFT JOIN `pre2162_order_detail` o ON (a.`id_order` = o.`id_order`)
	LEFT JOIN `pre2162_customer` c ON (c.`id_customer` = a.`id_customer`)
	INNER JOIN `pre2162_address` address ON address.id_address = a.id_address_delivery
	INNER JOIN `pre2162_country` country ON address.id_country = country.id_country
	INNER JOIN `pre2162_country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = 1)
	LEFT JOIN `pre2162_order_state` os ON (os.`id_order_state` = a.`current_state`)
	LEFT JOIN `pre2162_order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = 1)
    
WHERE `date_add` BETWEEN 2020-09-01 AND 2020-09-30

ORDER BY a.id_order DESC
  • Vous avez du remarquer qu'il n'y a pas de colonne "Numéro de facture", car je ne sais pas dans quel table et quel champs on récupère ce uméro de facture généré automatiquement par Prestashop (le #FA0000XX/2020).
  • Il y a également le WHERE qui me pose un soucis, la requête est correcte, mais je devrais modifier tous les mois les date pour avoir le bon mois, n'y a t'il pas une solution pour ne sélectionner que le mois en cours ?

En vous remerciant,

Cordialement,

Baptiste.

Share this post


Link to post
Share on other sites

Bonjour Baptiste,

Peur être tu as envie de faire quelque chose comme ceci:

SELECT

    o.`product_name` AS `Produit`,
    o.`product_reference` AS `Part number`,
    o.`product_quantity` AS `Quantité`,
    `total_paid_tax_excl` AS `Total HT`, 
    `total_paid_tax_incl`AS `Total TTC`, 
    a.`date_add` AS `Date achat`, 
    CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `Client`,
    osl.`name` AS `Statut`,
    IF((SELECT so.id_order FROM `pre2162_orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) AS `Compte client     (1 = Oui, 0 = Non)`,
    country_lang.name AS `Pays`
    
FROM pre2162_orders a

    LEFT JOIN `pre2162_order_detail` o ON (a.`id_order` = o.`id_order`)
    LEFT JOIN `pre2162_customer` c ON (c.`id_customer` = a.`id_customer`)
    INNER JOIN `pre2162_address` address ON address.id_address = a.id_address_delivery
    INNER JOIN `pre2162_country` country ON address.id_country = country.id_country
    INNER JOIN `pre2162_country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = 1)
    LEFT JOIN `pre2162_order_state` os ON (os.`id_order_state` = a.`current_state`)
    LEFT JOIN `pre2162_order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = 1)
    
WHERE a.`date_add` BETWEEN '2020-09-01' AND '2020-09-30'

ORDER BY a.id_order DESC

 

Ta requête ne pouvait marcher car 

    `product_name`,`product_reference``product_quantity` n appartiennent à la table commande

Je suis disponible si tu as d autre préoccupations

 

  • Thanks 2

Share this post


Link to post
Share on other sites

Bonjour,

Merci beaucoup @presta analytics c'est exactement ce que je souhaitais.

Oui, je viens de m'apercevoir en effet qu'ils appartenaient en fait à order_detail.

Un autre petit point à éclaircir, il n'est pas possible de récupérer les numéros de facture ? Je ne parviens pas à trouver le champs qui les sort, ces numéros de factures sont nativement sous forme FAXXXXXX/XXXX (les X étant des chiffres). Sinon j'y mettrais la référence de la commande, mais niveau comptabilité c'est plus simple avec les numéros de facture.

Edited by [email protected] (see edit history)

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More