acrob Posted November 29, 2021 Share Posted November 29, 2021 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 More sharing options...
JulienPct Posted November 29, 2021 Share Posted November 29, 2021 (edited) Bonjour, Comment voulez-vous que votre LEFT JOIN sur la table customer marche si vous ne mettez pas de relations avec une autre table ? Du moins, de mon côté, j'ai une erreur Edited November 29, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
acrob Posted November 29, 2021 Author Share Posted November 29, 2021 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. Link to comment Share on other sites More sharing options...
JulienPct Posted November 29, 2021 Share Posted November 29, 2021 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 More sharing options...
acrob Posted November 29, 2021 Author Share Posted November 29, 2021 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 More sharing options...
JulienPct Posted November 29, 2021 Share Posted November 29, 2021 Cependant, afin de récupérer un ID customer il suffit d'ajouter une jointure avec la tables "ps_orders" cependant je n'ai pas testé si des doublons sont possibles. Link to comment Share on other sites More sharing options...
JulienPct Posted November 29, 2021 Share Posted November 29, 2021 (edited) 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 November 29, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
acrob Posted November 29, 2021 Author Share Posted November 29, 2021 Vraiment un très grand immense merci, le résultat me semble bien plus cohérent. Belle fin de journée Link to comment Share on other sites More sharing options...
acrob Posted November 29, 2021 Author Share Posted November 29, 2021 Excuses moi d'abuser de ta gentillesse si je veux la liste des commandes pour un seul client, a quel niveau du SQL il faudrait le faire selon toi ? Merci Link to comment Share on other sites More sharing options...
JulienPct Posted November 29, 2021 Share Posted November 29, 2021 3 minutes ago, acrob said: pour un seul client Tu veux dire par client ou pour un en particulier ? Link to comment Share on other sites More sharing options...
acrob Posted November 29, 2021 Author Share Posted November 29, 2021 un client particulier, ex toutes les commandes du client qui a l'ID = 1 Link to comment Share on other sites More sharing options...
JulienPct Posted November 29, 2021 Share Posted November 29, 2021 (edited) Si tu ajoutes cette ligne au dessus de l'order by ? WHERE o.id_customer = "id_souhaité" Edited November 29, 2021 by JulienPct (see edit history) Link to comment Share on other sites More sharing options...
acrob Posted November 29, 2021 Author Share Posted November 29, 2021 Génial Merci encore Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now