WooFrance Dépannage et support WordPress WooCommerce › Forums › Discussion générale › Requête sur woocomerce
- Ce sujet contient 10 réponses, 4 participants et a été mis à jour pour la dernière fois par Guy, le il y a 7 années et 2 mois.
-
AuteurMessages
-
18 septembre 2017 à 15 h 03 min #5862
Bonjour,
Je cherche à obtenir la liste de toutes les personnes ayant acheté un produit spécifique.
Impossible de faire une requête de ce type directement dans woocomerce par les moyens de tri que le plugin propose… 🙁
Est-il possible d’obtenir ce listing depuis une requête SQL directement dans la BD ? Si oui à quoi ressemblerait cette requête ?
Merci de votre aide.
18 septembre 2017 à 15 h 41 min #586318 septembre 2017 à 21 h 42 min #586419 septembre 2017 à 11 h 35 min #586619 septembre 2017 à 12 h 37 min #586719 septembre 2017 à 19 h 41 min #5873Des plugins savent le faire et exporter en csv donc oui c’est possible. La difficulté c’est de trouver les bons paramètres parce que Woocommerce disperse les données dans plusieurs tables.
Je me suis servi d’une requête il y quelques mois pour extraire une partie des données, je vais voir si je la retrouve, ça pourrait peut-être te donner une piste.
Content(e) de mon aide ? Vous pouvez m'offrir un café ! 🙂
Avant d'appeler à l'aide: Dépannage Woocommerce
Vous manquez de trafic ? Payez le prix d'un seul backlink et obtenez-en beaucoup plus !
1 user thanked author for this post.
19 septembre 2017 à 20 h 52 min #587419 septembre 2017 à 21 h 39 min #5876J’ai 2 requêtes dont je m’étais servi pour arriver à mes fins. Ce n’était pas aussi précis que ce que je voulais mais à force ne manipulation sur le csv je m’en était sorti.
Mon but était différent donc ça ne doit pas coller tout à fait à ce que tu veux. Si tu es à l’aise avec SQL tu verras peut-être ce qu’il faut modifier.
J’étais toujours en version 2.x, comme la version 3 a modifié les tables tout ne correspond plus forcément, je n’ai pas retesté.Merci de revenir partager si tu trouves la solution 🙂
Requête 1:
SELECT *
FROM
nom-de-la-base.wp_postmeta
INNER JOIN
nom-de-la-base.wp_posts
ON nom-de-la-base.wp_posts.ID=nom-de-la-base.wp_postmeta.post_id
where nom-de-la-base.wp_posts.post_type = »shop_order »;Il faut évidemment changer « nom-de-la-base » et le préfixe des tables si nécessaire.
Requête 2:
SELECT
p.ID as order_id,
p.post_date,
p.post_status,
term.slug as order_status,
max( CASE WHEN pm.meta_key = ‘_order_tax’ and p.ID = pm.post_id THEN pm.meta_value END ) as order_tax,
max( CASE WHEN pm.meta_key = ‘_order_total’ and p.ID = pm.post_id THEN pm.meta_value END ) as order_total,
max( CASE WHEN pm.meta_key = ‘_billing_email’ and p.ID = pm.post_id THEN pm.meta_value END ) as billing_email,
max( CASE WHEN pm.meta_key = ‘_billing_first_name’ and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_first_name,
max( CASE WHEN pm.meta_key = ‘_billing_last_name’ and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_last_name,
max( CASE WHEN pm.meta_key = ‘_billing_address_1’ and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_1,
max( CASE WHEN pm.meta_key = ‘_billing_address_2’ and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_2,
max( CASE WHEN pm.meta_key = ‘_billing_city’ and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_city,
max( CASE WHEN pm.meta_key = ‘_billing_state’ and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_state,
max( CASE WHEN pm.meta_key = ‘_billing_postcode’ and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_postcode,
max( CASE WHEN pm.meta_key = ‘_shipping_first_name’ and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_first_name,
max( CASE WHEN pm.meta_key = ‘_shipping_last_name’ and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_last_name,
max( CASE WHEN pm.meta_key = ‘_shipping_address_1’ and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_1,
max( CASE WHEN pm.meta_key = ‘_shipping_address_2’ and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_2,
max( CASE WHEN pm.meta_key = ‘_shipping_city’ and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_city,
max( CASE WHEN pm.meta_key = ‘_shipping_state’ and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_state,
max( CASE WHEN pm.meta_key = ‘_shipping_postcode’ and p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_postcode,
max( CASE WHEN pm.meta_key = ‘_paid_date’ and p.ID = pm.post_id THEN pm.meta_value END ) as paid_date,
( select group_concat( order_item_name separator ‘|’ ) from wp_woocommerce_order_items where order_id = p.ID ) as order_items
FROM
wp_posts p JOIN wp_postmeta pm
LEFT JOIN wp_term_relationships AS rel ON p.ID = rel.object_ID
LEFT JOIN wp_term_taxonomy AS tax USING( term_taxonomy_id )
LEFT JOIN wp_terms AS term USING( term_id )
WHERE
post_type = ‘shop_order’ AND
post_status = ‘publish’ AND
tax.taxonomy = ‘shop_order_status’ AND
term.slug = ‘completed’ AND
p.ID = pm.post_id AND
post_date BETWEEN ‘2015-01-01’ AND ‘2016-01-31’
GROUP BY
p.post_date ASCContent(e) de mon aide ? Vous pouvez m'offrir un café ! 🙂
Avant d'appeler à l'aide: Dépannage Woocommerce
Vous manquez de trafic ? Payez le prix d'un seul backlink et obtenez-en beaucoup plus !
20 septembre 2017 à 8 h 24 min #587820 septembre 2017 à 14 h 31 min #588620 septembre 2017 à 15 h 40 min #5888C’est ce que j’avais dit, des plugins font ça très bien 😉
Par contre je ne connaissais pas celui-là, il semble déjà assez complet dans sa version gratuite mais en plus la version Pro est à prix fort correct. Merci de l’avoir repéré.
Content(e) de mon aide ? Vous pouvez m'offrir un café ! 🙂
Avant d'appeler à l'aide: Dépannage Woocommerce
Vous manquez de trafic ? Payez le prix d'un seul backlink et obtenez-en beaucoup plus !
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.