jeudi 4 mai 2017

Requêtes SQL Prestashop dans excel

Wow, ça faisait bien longtemps que je n'avais pas publié ici !

Alors.
En outil de BI, hé bien, je suis reste un aficionado de Excel.

Et comme les tableaux de bords de presta sont aussi ignobles qu'inutiles, c'est là que se pose la question : et si je faisais mes tableaux de bords prestashop dans excel ?

Pour des raisons de compatibilité de connecteur avec mon ERP, je suis encore sur prestashop 1.5.6.2.
mais bon, pour ce 1er exemple, pas grand chose à modifier pour que ça fonctionne sous PS 1.6

pré-requis : installer la possibilité d'accéder au serveur mysql via excel.
Donc, un petit tour chez oracle à la recherche du fichier mysql-connector-net

On paramètre gentiment sa connexion (excel : onglet données, autres sources, microsoft query)

Et voici votre 1ere requête sql prestashop dans excel :
liste des clients prestashop avec adresses et nombre de commandes passées (ce qui permet d'identifier rapidement ceux qui n'ont jamais commandé sur votre boutique, les coquins)

SELECT ps_customer_0.id_customer, ps_customer_0.active, ps_customer_0.id_gender, ps_customer_0.email, ps_customer_0.lastname, ps_customer_0.firstname, ps_customer_0.newsletter, ps_customer_0.optin, ps_customer_0.date_add, ps_address_0.id_address,
ps_address_0.alias,
ps_address_0.active,
ps_address_0.company,
ps_address_0.lastname,
ps_address_0.firstname,
ps_address_0.address1,
ps_address_0.address2,
ps_address_0.postcode,
ps_address_0.city,
ps_country_lang.`name` AS Country,
ps_state.`name` AS State,
ps_address_0.other,
ps_address_0.phone,
ps_address_0.phone_mobile,
ps_address_0.vat_number,
(
    SELECT COUNT(id_order)
    FROM  admin_objetsdirect.ps_orders orders_0
    WHERE orders_0.id_customer = ps_customer_0.id_customer
    ) as commandes
FROM admin_objetsdirect.ps_customer ps_customer_0
LEFT JOIN admin_objetsdirect.ps_address ps_address_0 ON ps_customer_0.id_customer = ps_address_0.id_customer
LEFT JOIN admin_objetsdirect.ps_country_lang ON admin_objetsdirect.ps_country_lang.id_country = ps_address_0.id_country
LEFT JOIN admin_objetsdirect.ps_state ON admin_objetsdirect.ps_state.id_state = ps_address_0.id_state
GROUP by ps_customer_0.id_customer

Et hop ! tout le temps à jour !