问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教一段SQL语句的含义

发布网友 发布时间:2022-05-01 09:28

我来回答

3个回答

懂视网 时间:2022-05-01 13:49

sql片段 id 表示唯一标示 这里不加where是因为 sql片段只对单表查询才抽取出来 这样的重用性更高 --> <sql id="query_user_where"> <if test="userCustom!=null"> <if test="userCustom.username != null and userCustom.username !=‘‘"> user.username like(‘%${userCustom.username}%‘) </if> </if> <!-- and(id=3 or id=6 or id=7) --> <!-- collection包装对象的属性 item 集合属性的单个对象 open 拼接开始字符串 close 拼接结束字符串 separator 每次遍历中间的分割字符串--> <foreach collection="ids" item="id" open="and(" close=")" separator="or"> id=#{id} </foreach> </sql>

 

sql片段的定义

标签:

热心网友 时间:2022-05-01 10:57

select
a.splanno,a.addid,a.itemno,
b.itemname,b.descript,
c.msname,
a.planqty,a.plansum,a.rcvqty,a.rcvsum,
a.planqty - a.rcvqty celqty,
a.plansum - a.rcvsum celsum
from
(
select
a.splanno,a.addid,a.itemno,
sum(isnull(a.planqty,0)) planqty,sum(isnull(a.plansum,0)) plansum,sum(isnull(a.rcvqty,0)) rcvqty,
sum(isnull(a.untaxrcvsum,0)) rcvsum
from
(select
a.splanno,case when a.addid = 1 then 1 when a.addid > 1 then 2 end addid,
a.itemno,a.planqty,a.plansum,a.spurno,a.lineid,b.rcvqty,
b.untaxrcvsum from
(select a.splanno,a.addid,a.itemno,a.planqty,a.plansum,b.spurno,b.lineid from
(select splanno,addid,itemno,planqty,plansum plansum from purplandet
where splanno in (select distinct splanno from purplanmst where cyc_code='0004')) a
left outer join
purdec b
on a.splanno=b.refsysno and a.addid=b.refaddsysno and a.itemno=b.itemno
) a
left outer join
rcvdet b
on a.spurno=b.purno and a.lineid=b.refrow and a.itemno=b.itemno
) a
group by a.splanno,a.addid,a.itemno
) a,
itemdata b,msunit c
where a.itemno=b.itemno and b.msunit=c.msunit
order by a.splanno,a.addid,a.itemno

1.先对SQl语句进行整理提高可读性
2.针对几个简单的概念和简单函数先了解
(a).别名(表的别名 以及栏位的别名):
上述例子中 如itemdata b 即定义表itemdata 为名称b 这样在第一个select中b.itemname即是查询的为itemdata.itemname
a.planqty - a.rcvqty celqty就是对前面的计算结果 以celqty栏位名称作为显示
(b).isnull
如果第一个参数值为空,默认显示第二个栏位值
(c).sum
栏位加总
(d).left join
表关联,配合on条件
(e).group by
分组栏位
(f).case when
SQL中的if else
3.SQL解析(因为不知道你的表具体含义只能通过SQL单纯的看)
(a). 一层一层来看的话,最外层查询的含义是
查询第一层子查询中的splanno,addid,itemno,
planqty,plansum,arcvqty,rcvsum,planqty - rcvqty,
plansum - rcvsum
以及itemdata 中的itemname,descript,和msunit表中的msname,

a表是通过itemno和itemdata 表关联,itemdata 表再通过msunit和msunit表关联
最后按照a表中splanno,addid,itemno进行升序排序
(b).from里层主要是查询最外层所定义的a表
(b1).直接看最里层的SQL查询
select a.splanno,a.addid,a.itemno,a.planqty,a.plansum,b.spurno,b.lineid from
(select splanno,addid,itemno,planqty,plansum plansum from purplandet
where splanno in (select distinct splanno from purplanmst where cyc_code='0004')) a
left outer join
purdec b
on a.splanno=b.refsysno and a.addid=b.refaddsysno and a.itemno=b.itemno) a

查询purplandet 中splanno 对应的cyc_code为0004的相关资料并关联purdec 查询对应栏位
(b2).以上查询出后会在关联rcvdet 查出需要栏位
(b3).通过对a.splanno,a.addid,a.itemno的分组,统计对应栏位的加总信息

不知道这样说明是否OK? 另外 建议尽量避免子查询 会影响效能
~~排版有点乱 凑合着看吧

热心网友 时间:2022-05-01 12:15

联表查询啊,好多表啊
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
镇海立人中学好吗 镇海立人中学升学率 自考学位申请在什么时候 电子科大自考本科申请学士学位要多久 浙江自考毕业两年后还能考学士学位吗 自考学士学位申请超过时限怎么办 自考本科毕业后多久能申请学士学位 自考本科毕业后多久能申请学位 自考要在几年内考完才能申请学位证 春天可以种白菜吗 春天能不能种白菜 夏天怎么带饭菜? 八星报喜,是什么意思啊 大家觉得玩游戏手机哪款好? 冰冷藏室结冰如何解决? 八星报喜,是什么意思 八星报喜是指哪八星呢?从文学角度 谁有八星报喜2012粤语高清 最好是在线观看 为什么我的笔记本突然不显示无线网络列表了? 八星报喜喜何来,精诚祈愿向神台,世间本多不平路,且歌且行释心怀。是什么意思? 煮熟的饭菜保温在多少温度范围吃最入口和营养? 八星报喜是指哪八星呢? 为什么冷藏的剩菜应加热后再食用? 求八星报喜的演员列表! 八星报喜是哪八位神仙? 电脑列表无法显示可连接网络应该怎么办? 《八星报喜》的主演是谁? 关于热饭菜速冻的问题 无线网络列表怎么不见了 圆周运动相关公式是什么? 把还热腾腾的菜放在冰箱里会危害冰箱吗?、 iPhoneX电池循环次数怎样查看 iphoneX电池问题? iPhoneX充电次数怎么查看? TVB古装起义电视剧好看的电视剧有什么 求林峰主演的电视剧翻云覆雨百度云链接或BT TVB 的翻云覆雨一共多少集 请问大佬有魔女的恋爱2014年上映的由严正化主演的高清视频在线观看资源吗 大骨头玉米汤的做法 翻云覆雨,颠鸾倒凤出自何处? 翻云覆雨 怎么炖骨头玉米汤 跪求罪人的谎言2014年网盘在线观看资源,伊藤英明主演的 用骨头和玉米怎么做汤 膀大腰圆的女生,可以穿紧身连衣裙吗? 健身房是穿紧身衣好还是宽松的好 黄瓜怎么淹做好吃 求 荣耀三九年 百度云免费在线观看资源 请问带假发好吗 荣耀三九年 GLORIOUS 39怎么样 电影荣耀39什么意思