mysql通过view实现组合数据的翻页

1 问题背景

  • 一个表格展现的数据,涉及多张表,还有分组的概念在其中
  • 另外,需要关键字搜索
  • 需要分页(只要是多表分页,view就跑不掉)

2 总结一下涉及的mysql关键字

  • 视图创建

    create view view_name as (查询数据语sql)

  • 左连接:确保左侧数据存在,右侧可能为null

    left join

  • 双连接: 这一步,主要用来过滤条件,某张表某个字段不能为null

    join

  • union all : 另一部分的数据,需要相关条件满足后,再分组

  • left join need_table_name where id is null

    为了满足union, 所以强制关联了相关表,使字段能够对上

  • 多字段条件判断

    where (column_1, column_2) not in ( select column1,coolumn2 from table_name)

3 感慨

mysql本身就很强大,还有太多需要学习,保持敬畏

4 本次的view sql语句

      create or replace view vw_assigned_solution_process_with_business_process as(
      select
          bs2bp.business_process_id as business_process_id_init,
          bs2bp.business_scenario_id,
          bs2bp.idx as business_process_idx,
          bpg.date_created as business_process_group_date_created,
          ss.id as solution_scenario_id,
          sp.*,
          sp.id,sp.change_by,sp.create_by,sp.date_created,
          sp.is_deleted as is_deleted,
          sp.last_updated,sp.version,sp.content_version,
          sp.diagram_id,sp.is_generic,sp.languages,
          sp.stable_id, sp.status,sp.code,sp.countries,
          sp.description, sp.industries,sp.name,sp.company_id,
          sp.master_bom_id, sp.source,sp.products,sp.release_version,
          sp.business_process_id,sp.job_id,
          ss2sp.id as solution_scenario2solution_process_id
          from business_scenario2business_process bs2bp
          left join business_process bp on bp.id = bs2bp.business_process_id
          left join business_process_group bpg on bpg.id = bp.business_process_group_id
          left join solution_scenario ss on ss.business_scenario_id = bs2bp.business_scenario_id
          left join solution_process sp on sp.business_process_id = bs2bp.business_process_id
          join solution_scenario2solution_process  ss2sp on ss2sp.solution_scenario_id = ss.id and ss2sp.solution_process_id = sp.id
      union all
      (select
          bs2bp.business_process_id as business_process_id_init,
          bs2bp.business_scenario_id,
          bs2bp.idx as business_process_idx,
          bpg.date_created as business_process_group_date_created,
          ss.id as solution_scenario_id,
          bp.id,sp.change_by,sp.create_by,sp.date_created,
          bp.is_deleted as is_deleted,
          sp.last_updated,bp.version,sp.content_version,
          sp.diagram_id,bp.is_generic,sp.languages,
          sp.stable_id, sp.status,sp.code,sp.countries,
          sp.description, sp.industries,sp.name,sp.company_id,
          sp.master_bom_id, sp.source,sp.products,sp.release_version,
          sp.business_process_id,sp.job_id,
          ss2sp.id as solution_scenario2solution_process_id
          from business_scenario2business_process bs2bp
          left join business_process bp on bp.id = bs2bp.business_process_id
          left join business_process_group bpg on bpg.id = bp.business_process_group_id
          left join solution_scenario ss on ss.business_scenario_id = bs2bp.business_scenario_id
          left join solution_process sp on sp.id is null
          left join solution_scenario2solution_process ss2sp on ss2sp.id is null
          where (ss.id,bp.id) not in (
          select ss2sp.solution_scenario_id,bp.id
          from solution_scenario2solution_process ss2sp
          join solution_process sp on sp.id = ss2sp.solution_process_id
          join business_process bp on bp.id = sp.business_process_id)
      )
  );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值