我正在尝试根据“总部”或“家长”位置将多个客户聚集在一起。
除了我在开发系统时没有预见到的缺陷之外,这样做没问题......对于没有“父”(独立业务)的客户,我将parent_id默认为0.因此,我的数据看起来像这样:
id parent_id customer
1 0 CustName#1
2 4 CustName#2 - Melbourne
3 4 CustName#2 - Sydney
4 0 CustName#2 (Head Office)
我想要做的是将我的结果组合在一起,以便我有一行用于CustName#1和一行用于CustName#2但是我的问题是没有parent_id = 0的父记录并且这些行被排除在外使用内连接时。
我已尝试使用案例陈述,但这也不起作用(父母仍被忽略)
非常感谢任何帮助。 这是我的查询(我的CASE基本上是在parent_id = 0时基于parent_id EXCEPT从customer表获取business_name,那么只需使用job_summary表中列出的customer_name):
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
答案 0 :(得分:1)
尝试使用LEFT OUTER JOIN
代替INNER JOIN
。
on js.parent_id=c.id
可能会过滤掉没有父母的行。