Jump to content

[Prestashop 1.7.6.4] Erreur dans mon code SQL, mais où ?


acrob

Recommended Posts

Bonjour,

Cette requête SQL me renvoi un résultat complètement erroné. Mais connaissance en SQL sont trop faible pour que j'en comprenne la raison. Un peu d'aide serait la bien venu.

SELECT 
product_id AS `ID`, 
od.product_name AS `Nom du produit`, 
od.product_quantity AS `Qté` , 
DATE_FORMAT(tco.ordered_datetime, "%W %e %M %Y") AS `Date de la réservation`, DATEDIFF(tco.ordered_datetime, now() ) as `Dans x jour`, 
cu.firstname AS `Prénom`, 
cu.lastname AS `Nom`, 
cu.email, 
cu.id_default_group AS `Groupe : 3 Client, 4 Adhérent` 
FROM `ps_order_detail` od 
LEFT JOIN `ps_product` p ON p.id_product = od.product_id AND p.id_product != 1
LEFT JOIN `ps_terracalendar_order` tco ON (tco.id_product = p.id_product AND tco.id_order = od.id_order AND tco.ordered_datetime IS NOT NULL) 
LEFT JOIN `ps_customer` cu 
ORDER BY tco.ordered_datetime

Coté résultat il me double toutes les lignes parce que j'ai 2 clients dans la BdD, j'imagine que c'est au niveau de la Left jointure sur la table customer.

Merci par avance pour votre précieuse aide.

 

 

Link to comment
Share on other sites

Just now, acrob said:

Merci pour ta réponse effectivement il manque la relation 🥵, mais à quoi relier cette table en fait. Il doit me manquer une table parce que celles présentes n'ont pas d'id_customer. 

 

Je pourrais regarder plus en profondeur avec le contenu de la table "ps_terracalendar_order".

Link to comment
Share on other sites

Voici les champs de cette table :

id_terracalendar_order
id_terracalendar
id_terracalendar_rule
id_order
id_cart
id_product
id_customization
id_product_attribute
datetime_code
ordered_datetime
is_refunded
date_add
date_upd

Merci 

Link to comment
Share on other sites

Cette requête semble mieux mais je ne suis pas sûr que cela règlera le problème. Qu'en est-il ?

SELECT 
product_id AS `ID`, 
od.product_name AS `Nom du produit`, 
od.product_quantity AS `Qté` , 
DATE_FORMAT(tco.ordered_datetime, "%W %e %M %Y") AS `Date de la réservation`, DATEDIFF(tco.ordered_datetime, now() ) as `Dans x jour`, 
cu.firstname AS `Prénom`, 
cu.lastname AS `Nom`, 
cu.email, 
cu.id_default_group AS `Groupe : 3 Client, 4 Adhérent` 
FROM `ps_order_detail` od 
LEFT JOIN `ps_product` p ON p.id_product = od.product_id AND p.id_product != 1
LEFT JOIN `ps_terracalendar_order` tco ON (tco.id_product = p.id_product AND tco.id_order = od.id_order AND tco.ordered_datetime IS NOT NULL) 
LEFT JOIN `ps_orders` o ON o.id_order = tco.id_order
LEFT JOIN `ps_customer` cu ON cu.id_customer = o.id_customer
ORDER BY tco.ordered_datetime;

 

Edited by JulienPct (see edit history)
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...