我是蒻鸡 2022-09-25 19:57 采纳率: 39.1%
浏览 400
已结题

SQLiteSpy环境下跨表取数联立输出,并且如何高效

新开一贴,之前的交代的不够明确。

img

SQL学的效果一直不是很理想,对于联立、合并等基本操作还是一头雾水。
上面的图片给定的是,最左侧是主数据库,其中过滤出来的ID,作为在后续表中查找的关键,后续更多的表中的ID是不全的,对后续的表格逐个进行查找、联立,如果在规定的条件下,无数据的话,就补零,有数据的话,就补数据,形成最终的输出效果。
目前是四张表的查找和联立,假如表格超过10张以上,如何做到代码简洁、运行高效?
谢谢!

  • 写回答

5条回答 默认 最新

  • Java大魔王 2022-09-25 22:27
    关注
    获得22.00元问题酬金

    这种表之间结合的数据,只能关联去查询,如果有多张表的话,就只能铜鼓哦多次关联获取结果了

    
    select t1.ID, t1.FL as '分类', t1.`总计`, t2.`领导`, t3.`税务`, t3.`杂项`, t4.`外卖+堂食`, t4.`其他` 
    from(
        -- 关联子查询X1
        select FL, ID, IFNULL(sum(DATA1), 0) as '总计' 
        from X1 where KJ = '总计' and FL in ('合肥', '芜湖') group by FL,ID
    )t1
    left join(
        -- 关联子查询X2
        select ID, IFNULL(sum(DATA1), 0) as '领导' 
        from X2 where KJ = '领导' group by ID
    )t2 on t1.ID = t2.ID
    left join(
        -- 关联子查询X3
        select tt3.ID, IFNULL(tt3.`税务`, 0) as '税务', IFNULL(tt3.`杂项`, 0) as '杂项' from(
            select ID, case KJ when '税务' then sum(DATA1) end '税务', case KJ when '杂项' then sum(DATA1) end '杂项' 
            from X3 where KJ in ('税务', '杂项') group by ID, KJ
        )tt3
    )t3 on t1.ID = t3.ID
    left join(
        -- 关联子查询X4
        select tt4.ID, IFNULL(tt4.`外卖+堂食`, 0) as '外卖+堂食', IFNULL(tt4.`其他`, 0) as '其他' from(
            select ID, case KJ when '堂食' or '外卖' then sum(DATA1) end '外卖+堂食', case KJ when '其他' then sum(DATA1) end '外卖'
            from X4 where KJ in ('堂食', '外卖', '其他') group by ID, KJ
        )tt4
    )t4 on t1.ID = t4.ID
    
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 创建了问题 9月25日

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?