数据库多个表的数据导出

兄弟部门需要做半年业务总结, 需要研发部门提供一份详细的原始数据. 以便于他们进行业务分析. 记录一次数据导出的过程. (以前一直在做移动端开发, 现在开始慢慢接触数据库的工作.)


要导出的数据要求如下

流水号, 工单号, 工单总额,提单时间,状态, 审批时间, 会员姓名, 会员等级, 手机号码, 开卡时间. 会员卡号, 消费项目 , 消费车辆, 分店名 ,保险开始时间, 保险结束时间 , 车型, 购车时间, 客户地址,


sql 语句

SELECT  r.SERIAL_NUMBER AS 流水号, 
        r.WORK_ORDER_NUMBER AS 工单号 , 
        r.WORK_ORDER_MONEY AS 工单总额,
        CONVERT(varchar(100), r.SUBMIT_DATE, 23) AS 提单时间,
        r.STATE AS 状态,
        CONVERT(varchar(100),r.OPERATE_DATE) AS 审批时间, 
        m.USER_NAME AS 姓名,
        m.LEVEL AS 会员等级,
        m.PHONE AS 手机号码,
        CONVERT(varchar(100), m.CREATE_DATE, 23) AS 开卡时间,
        m.CARD_NUMBER AS 会员卡号,
        r.CONSUMED_ITEM AS 消费项目,
        ci.LICENSE_PLATE AS 消费车辆,
        company.COMPANY_NAME AS 分店名,
        CONVERT(varchar(100), ci.IS_START_DATE, 23) AS 保险开始时间,
        CONVERT(varchar(100), ci.IS_OVER_DATE, 23) AS 保险结束时间,
        ci.CAR_MODEL AS 车型,
        CONVERT(varchar(100), ci.BUY_DATE, 23) AS 购车时间,
        customer.ADDRESS AS 客户地址
FROM
        CM_MEMBER_CARD_CONSUME_RECORD r 
        INNER JOIN CM_MEMBER_CARD m ON r.MEMBER_CARD_ID = m.ID
        LEFT JOIN CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION rcr ON rcr.CONSUME_RECORD_ID = r.ID
        LEFT JOIN CM_CARINFO ci ON rcr.CAR_ID = ci.ID
        LEFT JOIN CM_COMPANY company ON company.COMPANY_ID=m.COMPANY_ID 
        LEFT JOIN CM_CUSTOMER customer ON customer.CARD_ID=ci.CARD_ID
        WHERE company.COMPANY_ID = 'gzjlqcmyyxgs00000006'
        ORDER BY r.COMPANY_ID ,r.OPERATE_DATE desc


语句解读:

  • 别名: AS 后面 可以跟别名 如: r.SERIAL_NUMBER AS 流水号
    也可以省略 AS 如: r.SERIAL_NUMBER AS 流水号

  • 左链接: LEFT JOIN (ON) , 左边的表全部显示, 右边的表可能只显示一部分

  • 右链接: RIGHT JOIN (ON),

  • 内链接: INNER JOIN (ON),

  • WHERE : 条件筛选

  • ORDER BY: 排序方式, 默认是升序, DESC 是逆序
    条件语句自定义赋值:
    case when 条件1 then 结果1
    when 条件2 then 结果2
    when 条件3 then 结果3
    else 结果4
    end

  • 多表链接时, ON 和 where 的区别.
    ON 是创建临时表, where 是在临时表的基础上 进行条件筛选 这时候(左链接和右链接将失去作用)

下面是所有涉及到的表的详细介绍

CM_COMPANY 分店表
CM_MEMBER_CARD_CONSUME_RECORD  消费记录表
CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION  消费记录和车辆管理表


CM_MEMBER_CARD                  会员卡表
CM_WORK_ORDER                   工单表
CM_WORK_ORDER_TYPE              工单类型表
CM_MEMBER_CARD_CONSUME_RECORD_COUPON_RELATION   消费记录和优惠券关联表
CM_MEMBER_CARD_COUPON_RELATION                  会员卡和优惠券关联表
MEMBER_CARD_COUPON_RELATION_ID                  客户红包总额表
CM_MEMBER_CARD_COUPON                           优惠券表

CM_CARINFO                                      车辆信息表
CM_CUSTOMER_RED_PACKET_AMOUNT                   客户红包总额表
CM_CUSTOMER_COIN_AMOUNT                         客户锦讯币总额表
CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_PACKAGE_RELATION                   消费记录和赠送优惠券礼包关联表
CM_MEMBER_CARD_COUPON_PACKAGE  礼包表
CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION   礼包和优惠券关联表

CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_RELATION  消费记录和赠送优惠券关联表



CM_COMPANY 分店表 字段意思
COMPANY_ID          分店ID
COMPANY_NAME        分店名称
ADDRESS             地址
LONGI_LATI          经纬度
RESCUE_PHONE        救援电话
SECCAR_PHONE        二手车电话
INSURANCE_PHONE     保险电话
COMPLAINTS_PHONE    投诉电话
APPOINTMENT_PHONE   预约电话
ZDBS                总店标识,0-是,1-否
GZ_PHONE            故障电话
BRAND_IDS           可维修的品牌ID
SHOWSTATE   
QUICK_CALL  
ABBREVIATENAME  
AREA_ID             所属地区
driverimg   
I   


消费记录表:CM_MEMBER_CARD_CONSUME_RECORD
ID                  id主键
SERIAL_NUMBER       流水号
WORK_ORDER_NUMBER   工单号
WORK_ORDER_MONEY    工单金额
APPOINTMENT_TYPE    预约类型 1: 否, 2:APP 预约, 3.电话预约
STATE               状态: 2:暂存,4:已提交,6:已消费,8:已驳回,10: 已返单
COMPANY_ID          分店 id
MEMBER_CARD_ID      会员卡 id
SUBMITTER           提交者
SUBMIT_DATE         提交日期
OPERATOR            操作人
OPERATE_DATE        操作日期
USED_MONEY  
USED_CASH   
PRESENTED_SCORE     获取积分
TOTAL_CONSUMED_MONEY    总钱数
CONSUMED_ITEM           消费项目
BALANCE_BEFORE_CONSUME  结账前
BALANCE_AFTER_CONSUME   结账后
REMARK                  备注
COMMENT                 说明
RED_PACKET_AMOUNT       红包金额
COIN_AMOUNT             锦讯币总金额
RETURN_CASH             现金返回
SUBMITTER_NAME          提交者姓名
SMS_CANCELED            取消短信
SMS_CANCELER            短信消除器
SMS_CANCELER_NAME       短信消除器的名字
SMS_CANCELED_DATE       短信取消日期
FAVORABLE_MONEY2    
REMARK2 备注2
FAVORABLE_MONEY3    
REMARK3 
PRESENT_COINS   当前锦讯币




会员卡表:CM_MEMBER_CARD
ID  
CUSTOMER_ID     顾客ID
PHONE           手机号
USER_NAME       姓名
CARD_NUMBER     卡号
CHIP_NUMBER     会员芯片卡号
COMPANY_ID      公司ID
CREATOR         创建人工号
CREATE_DATE     创建日期
LAST_MODIFIED   上次更新信息时间
BALANCE         账目
SCORE           积分
STATE           状态, 1: 正常  2: 已冻结  4: 已退卡 
LEVEL           会员等级  0:普通卡   3: 银卡   6:金卡 9: 白金卡
REMARK          备注
OPENMOVECAR     挪车提醒
SOURCE  ???      取值:0, 2
REFUNDMONEY 
OPERATORBACK    
OPERATORBACKNAME    
BACKREMARK      退卡备注



工单表:CM_WORK_ORDER
ID                  id
WORK_ORDER_NUMBER   工单号
CONSUME_RECORD_ID   消费记录id
COMPANY_ID          COMPANY_ID
WORK_ORDER_DATE             工单时间
TYPE                            类型
ORIGN_WORKING_HOURS_CHARGE  原工时费用
ACTUAL_WORKING_HOURS_CHARGE 折后工时费用
MATERIAL_CHARGE 材料费用
WORK_ORDER_AMOUNT   工单金额
COME_FROM   来源(1-R3同步,2-手动添加)

工单类型表: CM_WORK_ORDER_TYPE
CODE    代码
NAME    名字
COMPANY_ID  COMPANY_ID



消费记录和车辆管理表 :CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION
CONSUME_RECORD_ID   消费记录 id
CAR_ID              汽车 id


消费记录和优惠券关联表  CM_MEMBER_CARD_CONSUME_RECORD_COUPON_RELATION
CONSUME_RECORD_ID               消费记录id
MEMBER_CARD_COUPON_RELATION_ID  会员卡优惠券关系id
USED_DATE                       使用日期
ACTUAL_DEDUCTED_AMOUNT          实际扣除金额


会员卡和优惠券关联表 CM_MEMBER_CARD_COUPON_RELATION   
ID  主键
MEMBER_CARD_ID  会员卡 id
COUPON_ID   优惠券id
EXPIRED_DATE    过期时间
USED_DATE   使用日期
CHECKED 检查: 1 或者空
COUPON_FROM 来自何方的卷
ISSUE_DATE  签发日期

客户红包总额表 : CM_CUSTOMER_RED_PACKET_AMOUNT
ID  ID
CUSTOMER_NAME       客户名称
PHONE_NUMBER        预留电话
RED_PACKET_AMOUNT   红包总额
COMPANY_ID          分店ID


优惠券表   CM_MEMBER_CARD_COUPON                            
ID  
COUPON_NAME         优惠券 名字
COMPANY_ID          优惠券 可用店铺
STATE               优惠券  当前状态  1: 正常, 2: 停止发放
TYPE                优惠券 种类 1:代金券, 2:精品卷 3: 工时卷 4: 服务卷 99:其他
COUPON_PRICE    
COUPON_MONEY        优惠券 金额
DISPOSABLE          一次性?
CREATOR             操作人工号
CREATE_DATE         创建日期
LAST_MODIFIER       最后修改人 工号
LAST_MODIFIED       最近修改日期
REMARK              备注


礼包和优惠券关联表  CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION
COUPON_PACKAGE_ID   礼包id
COUPON_ID           优惠券id
QUANTITY            数量







车辆信息表 CM_CARINFO    
ID                  主键ID
CARD_ID             客户身份证号
CAR_ID              车辆ID
CAR_MODEL           车型
LICENSE_PLATE       车牌号
BUY_DATE            购车日期
IS_START_DATE       保险开始时间
IS_OVER_DATE        保险结束时间
LAST_REPARE_DATE    最后维修时间
FRAME_NUMBER        车架号
CREATE_TIME         创建日期
CHASSIS_NUMBER      底盘号
COMPANY_ID          分店ID
CCP                 品牌
ENGINE_NUMBER       发动机号
LAST_KM             里程数
FPDATE              发牌日期
remind_day          提醒日
spacing_km  
comefrom    
model_str   
brand_str   
LAST_UPDATETIME     上次更新时间表
IS_DEL      

客户红包总额表    MEMBER_CARD_COUPON_RELATION_ID
ID                  ID
CUSTOMER_NAME       客户名称
PHONE_NUMBER        预留电话
RED_PACKET_AMOUNT   红包总额
COMPANY_ID          分店ID

客户锦讯币总额表 CM_CUSTOMER_COIN_AMOUNT                        
ID              主键ID
PHONE_NUMBER    预留电话
COIN_AMOUNT     锦讯币总额
FROZEN_NUMBER   锦讯币冻结数额

消费记录和赠送优惠券礼包关联表  CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_PACKAGE_RELATION
CONSUME_RECORD_ID   消费记录id
COUPON_PACKAGE_ID   礼包id


礼包表: CM_MEMBER_CARD_COUPON_PACKAGE
ID                      主键id
COUPON_PACKAGE_NAME     礼包名字
COMPANY_ID              分店 id
STATE                   发送状态: 1: 正常的, 2: 已停止发放
MONTH_TO_LIVE           有效期(月)
EXPIRED_DATE            过期时间
CREATOR                 创建者工号
CREATE_DATE             创建时间
TOTAL_MONEY             总金额
LAST_MODIFIER           最后修改人 工号
LAST_MODIFIED           最后修改时间
REMARK                  备注

礼包和优惠券关联表  CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION
COUPON_PACKAGE_ID       礼包id
COUPON_ID               优惠券id
QUANTITY                数量

消费记录和赠送优惠券关联表  CM_MEMBER_CARD_CONSUME_RECORD_AND_PRESENT_COUPON_RELATION 
CONSUME_RECORD_ID   消费记录id
COUPON_ID   优惠券id
QUANTITY    数量
MONTH_TO_LIVE   有效期(月)

r = CM_MEMBER_CARD_CONSUME_RECORD   消费记录表
m = CM_MEMBER_CARD                  会 员卡表
o = CM_WORK_ORDER                   工单表 
t = CM_WORK_ORDER_TYPE              工单了类型表.
rcr = CM_MEMBER_CARD_CONSUME_RECORD_CAR_RELATION     消费记录和车辆关联表
cr = CM_MEMBER_CARD_CONSUME_RECORD_COUPON_RELATION   消费记录和优惠券关联表
cc = CM_MEMBER_CARD_COUPON           优惠券表
ci = CM_CARINFO                     车辆信息表
ccrpa = CM_CUSTOMER_RED_PACKET_AMOUNT   客户红包总额表
ccc = CM_CUSTOMER_COIN_AMOUNT       客户锦讯币总额表
cp = CM_MEMBER_CARD_COUPON_PACKAGE      消费记录和赠送优惠券礼包关联表
cpcr = CM_MEMBER_CARD_COUPON_PACKAGE_COUPON_RELATION  礼包和优惠券关联表
mccc = CM_MEMBER_CARD_COUPON     优惠券表


遇到的一些问题, 和解决方案:

  • 在使用left jion时,on和where条件的区别如下:

    1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

    2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

  • 做条件筛选时, 能用 WHERE 就不要用 AND , and 在只满足其中一个条件时 也会返回数据, 其中那个不满足的条件项 为 null.

  • sql 日期格式化

你可能感兴趣的:(数据库多个表的数据导出)