开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
bullshit-codes
/
sql
/
sql_too_long.sql
bullshit-codes
/
sql
/
sql_too_long.sql
sql_too_long.sql 7.68 KB
一键复制 编辑 原始数据 按行查看 历史
FunGa 提交于 2019年05月31日 13:57 +08:00 . sql too long
# 一度以为是DBA来写Java了,这么长SQL,怎么复用?怎么维护?
# 蛋疼的是,一个XML里面大量这样的SQL,几千行谁看得懂?
# 反例教材
select
demand_id,
demand_code,
demand_name,
demand_priority,
demand_priority_str,
receiver_addr,
receiver_name,
business_area,
demand_type,
demand_type_str,
demand_status,
demand_status_str,
expected_work_time,
created,
created_name,
created_by
from
(select
aa.demand_id,
aa.demand_code,
aa.demand_name,
aa.demand_priority,
aa.demand_priority_str,
aa.business_area,
aa.demand_type,
aa.demand_type_str,
aa.demand_status,
aa.demand_status_str,
aa.acceptance_addr,
aa.created_by,
aa.created_name,
aa.created,
aa.receiver_addr,
aa.receiver_name,
(select count(1)
from dm_demand_t ddt
where ddt.demand_id = aa.demand_id
and (ddt.demand_status = 1 and
(ddt.created_by= #{report.loginEmail} or
ddt.receiver_addr = #{report.loginEmail} or
ddt.pm_email_addr = #{report.loginEmail} or #{report.pmoFlag} = 'Y'))
or (ddt.demand_status = 7 and
(ddt.created_by= #{report.loginEmail} or
ddt.receiver_addr = #{report.loginEmail} or
ddt.pm_email_addr = #{report.loginEmail} or #{report.pmoFlag} = 'Y'))
) as enable_edit,
(select count(1)
from dm_demand_t ddt
where ddt.demand_id = aa.demand_id
and (ddt.demand_status = 1 and
(ddt.created_by= #{report.loginEmail} or
ddt.receiver_addr = #{report.loginEmail} or
ddt.pm_email_addr = #{report.loginEmail} or #{report.pmoFlag} = 'Y'))
or (ddt.demand_status = 7 and
(ddt.created_by= #{report.loginEmail} or
ddt.receiver_addr = #{report.loginEmail} or
ddt.pm_email_addr = #{report.loginEmail} or #{report.pmoFlag} = 'Y'))
) as enable_close,
(select count(1)
from dm_demand_t ddt
where ddt.demand_id =aa.demand_id
and (ddt.demand_status= 3 and
(ddt.receiver_addr= #{report.loginEmail} or ddt.pm_email_addr =#{report.loginEmail} or #{report.pmoFlag} = 'Y'))
) as enable_project,
(select count(1)
from dm_demand_t ddt
where ddt.demand_id=aa.demand_id
and(ddt.demand_status=8
and(ddt.created_by=#{report.loginEmail} or locate(#{report.loginEmail},aa.acceptance_addr)>0))
)as enable_accept,
aa.total_time as expected_work_time,
-- concat(ifnull(aa.total_person,0),'/',ifnull(aa.total_time,0)) as expected_work_time,
group_concat(aa.dept_id) as lev1_depts,
group_concat(aa.lev2_dept_id) as lev2_depts
from
(SELECT
dt.demand_id,
dt.demand_code,
dt.demand_name,
dt.demand_priority,
cd1.display AS demand_priority_str,
dt.business_area,
dt.demand_type,
cd3.display AS demand_type_str,
dt.demand_status,
cd2.display AS demand_status_str,
dt.created_by,
ts.name as created_name,
dt.created,
dt.receiver_addr,
ts2.name AS receiver_name,
(case dt.demand_type
when 1 then convert(sum(ifnull(dtt.work_time,0)),decimal(10,1))
when 2 then convert(sum(ifnull(dtt.work_time,0)),decimal(10,1))
when 3 then
(select convert(sum(aa.bus_time),decimal(10,1))
from
(select
tt.demand_id,
op.id as operate_id,
ifnull(op.operation_cycle, 0) * (ifnull(tt.proportion, 0) / 100) * ifnull(op.hr_config, 0) as bus_time
from dm_demand_time_t tt
inner join dm_demand_operation_t op on op.status=1 AND op.ident_code = 0
and tt.project_code=op.project_code and tt.demand_id=op.demand_id
where tt.status = 1 AND tt.ident_code = 0) aa
where aa.demand_id =dt.demand_id)
else 0
end
) as total_time,
(select count(distinct st.user_email_addr)
from dm_demand_source_t st
where st.status = 1 and st.demand_id = dt.demand_id) as total_person,
ds.dept_id,
ds.lev2_dept_id,
group_concat(dat.acceptance_incharge_addr) as acceptance_addr
FROM dm_demand_t dt
left join ts_user ts on ts.email_addr=dt.created_by
left join ts_user ts2 on ts2.email_addr=dt.receiver_addr
left join (select
st.demand_id,
tu.m_dept_des_level2 as dept_id,
tu.m_dept_des_level3 as lev2_dept_id
from
dm_demand_source_t st
left join ts_user tu on tu.email_addr=st.user_email_addr
where st.status = 1
) ds on ds.demand_id = dt.demand_id
left join dm_code_dict cd1 ON cd1.ident_key='priority' and cd1.code = dt.demand_priority
left join dm_code_dict cd2 ON cd2.ident_key='demandStatus' and cd2.code = dt.demand_status
left join dm_code_dict cd3 ON cd3.ident_key='demandType' and cd3.code = dt.demand_type
left join dm_demand_acceptance_t dat on dat.status = 1 and dat.demand_id = dt.demand_id
left join dm_demand_time_t dtt on dtt.status = 1 and dtt.demand_id = dt.demand_id AND dtt.ident_code = 0
where 1 = 1
and dt.created between if(#{report.beginDate}=null,'1000-01-01',if(#{report.beginDate}='','1000-01-01',#{report.beginDate}))
and if(#{report.endDate}=null,'9999-01-01',if(#{report.endDate}='','9999-01-01',#{report.endDate}))
<if test="report.businessArea !=null and report.businessArea!=''">
and dt.business_area = #{report.businessArea}
</if>
<if test="report.demandName !=null and report.demandName!=''">
and locate(#{report.demandName}, dt.demand_name) > 0
</if>
<if test="report.demandCode !=null and report.demandCode!=''">
and locate(#{report.demandCode}, dt.demand_code) > 0
</if>
group by
dt.demand_id,
dt.demand_code,
dt.demand_name,
dt.demand_priority,
demand_priority_str,
dt.business_area,
dt.demand_type,
demand_type_str,
dt.demand_status,
demand_status_str,
dt.created_by,
dt.created,
created_name,
total_person,
ds.dept_id,
ds.lev2_dept_id
) aa
group by aa.demand_id,
aa.demand_code,
aa.demand_name,
aa.demand_priority,
aa.demand_priority_str,
aa.business_area,
aa.demand_type,
aa.demand_type_str,
aa.demand_status,
aa.demand_status_str,
aa.created_by,
aa.created,
aa.created_name,
aa.acceptance_addr,
aa.receiver_addr,
aa.receiver_name,
enable_edit,
enable_accept,
enable_project,
enable_close) bb
where 1=1
<if test="report.demandType !=null and report.demandType!=''">
and bb.demand_type_str = #{report.demandType}
</if>
<if test="report.demandPriority !=null and report.demandPriority!=''">
and bb.demand_priority_str = #{report.demandPriority}
</if>
<if test="report.demandStatus !=null and report.demandStatus!=''">
and bb.demand_status_str=#{report.demandStatus}
</if>
<if test="report.demandPerson !=null and report.demandPerson!=''">
and locate(#{report.demandPerson},bb.receiver_addr)>0
</if>
<if test="report.lev1Dept !=null and report.lev1Dept!=''">
and locate(concat(',',#{report.lev1Dept},','),concat(',',bb.lev1_depts,','))>0
</if>
<if test="report.lev2Dept !=null and report.lev2Dept!=''">
and locate(concat(',',#{report.lev2Dept},','),concat(',',bb.lev2_depts,','))>0
</if>
ORDER BY bb.created DESC
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

本仓库收集史上最坑爹的代码片段,欢迎大家通过 Fork+Pull Request 参与
暂无标签
MIT
使用 MIT 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/java521/bullshit-codes.git
git@gitee.com:java521/bullshit-codes.git
java521
bullshit-codes
bullshit-codes
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /