zoukankan      html  css  js  c++  java
  • 龌龊的sql,说明了设计的不足

    drop table #tableMain
    drop table #tableChild1
    drop table #tableChild2


    create table #tableMain(mainId int, mainName varchar(10))
    create table #tableChild1(mainId int, ChildId int, ChildName varchar(10))
    create table #tableChild2(mainId int, ChildId int, ChildName varchar(10))

    insert into #tableMain values(1,'第1条单据')
    insert into #tableChild1 values(1,1,'第1条信息')
    insert into #tableChild1 values(1,2,'第2条信息')
    insert into #tableChild1 values(1,3,'第3条信息')
    insert into #tableChild2 values(1,1,'第1个人')
    insert into #tableChild2 values(1,2,'第2个人')
    insert into #tableChild2 values(1,3,'第3个人')

    --
    insert into #tableMain values(2,'第2条单据')
    insert into #tableChild1 values(2,1,'2-1条信息')
    insert into #tableChild1 values(2,2,'2-2条信息')
    insert into #tableChild1 values(2,3,'2-3条信息')
    insert into #tableChild2 values(2,1,'2-1个人')
    insert into #tableChild2 values(2,2,'2-2个人')
    insert into #tableChild2 values(2,3,'2-3个人')


    select * from #tableMain A, #tableChild1 B, #tableChild2 C
    where A.mainId = B.mainId and A.mainId = C.mainId
    mainId mainName mainId ChildId ChildName mainId ChildId ChildName
    1 第1条单据 1 1 第1条信息 1 1 第1个人
    1 第1条单据 1 2 第2条信息 1 1 第1个人
    1 第1条单据 1 3 第3条信息 1 1 第1个人
    1 第1条单据 1 1 第1条信息 1 2 第2个人
    1 第1条单据 1 2 第2条信息 1 2 第2个人
    1 第1条单据 1 3 第3条信息 1 2 第2个人
    1 第1条单据 1 1 第1条信息 1 3 第3个人
    1 第1条单据 1 2 第2条信息 1 3 第3个人
    1 第1条单据 1 3 第3条信息 1 3 第3个人
    2 第2条单据 2 1 2-1条信息 2 1 2-1个人
    2 第2条单据 2 2 2-2条信息 2 1 2-1个人
    2 第2条单据 2 3 2-3条信息 2 1 2-1个人
    2 第2条单据 2 1 2-1条信息 2 2 2-2个人
    2 第2条单据 2 2 2-2条信息 2 2 2-2个人
    2 第2条单据 2 3 2-3条信息 2 2 2-2个人
    2 第2条单据 2 1 2-1条信息 2 3 2-3个人
    2 第2条单据 2 2 2-2条信息 2 3 2-3个人
    2 第2条单据 2 3 2-3条信息 2 3 2-3个人

    select * from #tableMain A,
    (select * from #tableChild1 where ChildId in(select min(ChildId) from #tableChild1 group by mainId)) B,
    (select * from #tableChild2 where ChildId in(select min(ChildId) from #tableChild2 group by mainId)) C
    where A.mainId = B.mainId and A.mainId = C.mainId

    mainId mainName mainId ChildId ChildName mainId ChildId ChildName
    1 第1条单据 1 1 第1条信息 1 1 第1个人
    2 第2条单据 2 1 2-1条信息 2 1 2-1个人

    select *,
    case when B.counts >1 then B.ChildName +',等' else B.ChildName end as Child1Name0 ,
    case when C.counts >1 then C.ChildName +',等' else C.ChildName end as Child2Name0
    from #tableMain A,
    (select F.*,E.counts from #tableChild1 F,
    (select count(1) counts,min(ChildId) ChildId,mainId from #tableChild1 D group by mainId) E
    where F.ChildId = E.ChildId and F.mainId = E.mainId) B,
    (select F.*,E.counts from #tableChild2 F,
    (select count(1) counts,min(ChildId) ChildId,mainId from #tableChild2 D group by mainId) E
    where F.ChildId = E.ChildId and F.mainId = E.mainId) C
    where A.mainId = B.mainId and A.mainId = C.mainId

    mainId mainName mainId ChildId ChildName counts mainId ChildId ChildName counts Child1Name0 Child2Name0
    1 第1条单据 1 1 第1条信息 3 1 1 第1个人 3 第1条信息,等 第1个人,等
    2 第2条单据 2 1 2-1条信息 3 2 1 2-1个人 3 2-1条信息,等 2-1个人,等

  • 相关阅读:
    第3次实践作业
    第2次实践作业
    第09组 团队Git现场编程实战
    第二次结对编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    课程设计第十四天
  • 原文地址:https://www.cnblogs.com/zzlchn/p/2153664.html
Copyright © 2011-2022 走看看