Je tente de regrouper un certain nombre de clients en fonction de leur emplacement «Siège social» ou «Parent». Cela fonctionne bien à l'exception d'une faille que je n'avais pas vue lorsque je développais mon système ... Pour les clients qui n'avaient pas de "Parent" (entreprise autonome), j'ai mis par défaut le parent_id à 0. Par conséquent, mon données ressemblerait à ceci:Aide sur la requête MySQL à l'aide de l'instruction CASE
id parent_id customer
1 0 CustName#1
2 4 CustName#2 - Melbourne
3 4 CustName#2 - Sydney
4 0 CustName#2 (Head Office)
ce que je veux faire du groupe est mes résultats ensemble pour que j'ai une ligne pour CustName # 1 et une ligne pour CustName # 2, mais mon problème est qu'il n'y a pas d'enregistrement parent pour parent_id = 0 et ces lignes sont exclues lors de l'utilisation d'une jointure interne.
J'ai essayé d'utiliser une déclaration de cas, mais qui ne fonctionne pas non plus (les parents sont toujours ignorés)
Toute aide serait grandement apprécié. Voici ma requête (mon cas tente essentiellement d'obtenir la business_name de la table des clients en fonction de la parent_id SAUF lorsque la parent_id = 0, il suffit d'utiliser la customer_name qui figure dans le tableau job_summary):
SELECT
js.month_of_year,
(CASE js.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END) as customer,
SUM(js.jobs),
SUM(js.total_cost),
sum(js.total_sell)
FROM JOB_SUMMARY js INNER JOIN
customer c on js.parent_id=c.id
group by
js.month_of_year,
(CASE c.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END)
ORDER BY `customer` ASC
Merci ... Je pense que cela fonctionne ... Je reçois maintenant Nulls dans la colonne c.customer_id donc je suppose que cela doit être des lignes où il ne pourrait pas correspondre ... Suivant prob, que dois-je faire à propos de la nulls? – sjw
Je pense '(CASE c.parent_id QUAND 0 alors js.customer_name ELSE c.business_name END)' devrait être '(CAS js.parent_id QUAND 0 alors js.customer_name ELSE c.business_name END)' dans votre groupe par clause. – davek
Où obtenez-vous c.customer_id: Je ne peux pas le voir dans votre requête. – davek