pms全部客户数数据导出的反思:
(1)问题
WHERE条件不能是B表的条件 因为LEFT JION 只有a表,A表的数据B表可能没有,导致数据丢失。
例如酒店名称X在酒店明细表A中,但是酒店合同B表没有X的合同。此时WHERE若设置B的条件 会导致部分数据丢失
原因
A有B无的数据查询的数据结果B字段为NULL
解决方法
1.将数据结果分为Null 和 not null
2.设置为A表的条件
(2)
需求:客户数在A表中,合同信息在B表,但是有的客户没有合同,有的客户升级系统签了多次合同,我们只想统计符合条件的客户数。
**问题:**在WHERE条件中需要设置B的条件,但是WHERE若设置B的条件 会导致部分数据丢失
解决方法:
思路:AB共有的酒店,合同id不为null,A有B没有的数据,B字段为NULL。
所以,将整体分为NULL和not null ,对两部分数据分别加不同的条件。
(3)
需求:
有的客户升级系统签了多次合同,导致Left JOIN 后会出现该客户的多条信息,但是我们只想要一条此信息
**问题:**此情况不能用Distinct ,如何删除某字段数据重复,其他字段数据不重复的信息
解决方法:
1.首先明确这几条数据是否有唯一值ctrct_id
2.哪条是我们想要的数据MAX(b.ctrct_id),
3.这几条数据哪个字段是重复的 GROUP BY b.Hotel_id
WHERE b.ctrct_id IN (SELECT MAX(b.ctrct_id) FROM hotel_Contract AS b GROUP BY b.Hotel_id))