大家会写这么长的SQL语句么???

qingYun1029 2012-11-10 05:23:47
不说语句质量及难易度。。

我想知道大家遇到这钟情况一般怎么处理???

是分到不同包含查询语句的函数里面还是像我这样一条语句写出来???

这条语句查询出来的都是一个页面上的所以“页签”所包含的内容,最后拼接如下:

SELECT WF_w_pc.XXXX,w_pc_ProjectId,ISNULL(WF_w_pc.w_pc_AnnualPlan,'') w_pc_AnnualPlan,w_pc_ProjectName,Dept_Name,ISNULL(WF_R_BI.YYYYName,'') w_pc_Nature,ISNULL(WF_R_BI2.YYYYName,'') w_pc_SOURCE ,w_pc_StartDate,w_pc_EndDate,ISNULL(WF_w_pc_AP.w_pc_AP_Plan,'') w_pc_AP_Plan 
,CASE WF_w_pc.w_pc_Status
WHEN 10 THEN '草稿'
WHEN 20 THEN '审核中'
WHEN 30 THEN '完成'
ELSE '' END
AS w_pc_Status
,w_pc_Backdrop,w_pc_MainContent,w_pc_TechLines,w_pc_ResultForm,w_pc_SocialBenefits,w_pc_EconomicBenefit,w_pc_TechBenefits,w_pc_CooperationForm,w_pc_CooperationByUnit
,ISNULL(WF_w_pc_P.w_pc_P_UserName,'') w_pc_P_UserName
,ISNULL(WF_w_pc_P.proHead,'') proHead
,ISNULL(WF_w_pc_P.proArticipants,'') proArticipants
FROM WF_Research_ProjectCharter WF_w_pc
LEFT JOIN WF_Research_PC_AnnualPlan WF_w_pc_AP
ON WF_w_pc.XXXX=WF_w_pc_AP.XXXX
LEFT JOIN WF_Research_BasicInfo WF_R_BI
ON WF_w_pc.w_pc_Nature=WF_R_BI.YYYYID AND WF_R_BI.YYYYType=1
LEFT JOIN WF_Research_BasicInfo WF_R_BI2
ON WF_w_pc.w_pc_Nature=WF_R_BI2.YYYYID AND WF_R_BI2.YYYYType=2
LEFT JOIN
(SELECT XXXX,w_pc_P_UserName=(STUFF((SELECT ',' + w_pc_P_USERNAME FROM WF_Research_PC_Participate
WHERE w_pc_P_Type=2 AND XXXX=pcp.XXXX FOR XML PATH('')),1,1,''))
,proHead=(STUFF((SELECT ',' + w_pc_P_USERNAME FROM WF_Research_PC_Participate
WHERE w_pc_P_Type=3 AND XXXX=pcp.XXXX FOR XML PATH('')),1,1,''))
,proArticipants=(STUFF((SELECT ',' + w_pc_P_USERNAME FROM WF_Research_PC_Participate
WHERE w_pc_P_Type<>3 AND XXXX=pcp.XXXX FOR XML PATH('')),1,1,''))
FROM WF_Research_PC_Participate pcp
GROUP BY XXXX) AS WF_w_pc_P
ON WF_w_pc.XXXX=WF_w_pc_P.XXXX
WHERE WF_w_pc.XXXX=@XXXX
...全文
605 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingYun1029 2012-11-15
  • 打赏
  • 举报
回复
引用 19 楼 wanghui0380 的回复:
基本上不这么写,显示归显示,逻辑归逻辑,数据归数据 我想问一下,你这到底归那里呢?为了显示而把数据按逻辑处理了?
需要显示的数据查询出来输出。。。
  • 打赏
  • 举报
回复
还好
bookc-man 2012-11-13
  • 打赏
  • 举报
回复
这个还好,见过了,习惯了,本人表示毫无压力
风2013 2012-11-13
  • 打赏
  • 举报
回复
sql 语句到不算长 更长的我都写过 我个人写法 基本上不会用IsNull case when... 数据量大的时候 这玩意用多了貌似会影响Sql的执行性能。 case when 还好 isnull比较有影响 前提是大数据量
wanghui0380 2012-11-13
  • 打赏
  • 举报
回复
基本上不这么写,显示归显示,逻辑归逻辑,数据归数据 我想问一下,你这到底归那里呢?为了显示而把数据按逻辑处理了?
men52676521 2012-11-13
  • 打赏
  • 举报
回复
引用 16 楼 zifengshen1981 的回复:
适当的使用视图或函数吧。还有可以利用 with语法还不错,层次感强一点,思路也会清晰。。
+1
sunny6281 2012-11-13
  • 打赏
  • 举报
回复
个人习惯,查询中的每个字段单独占一行 每个表连接单独占一行 每个条件单独占一行 反正就是尽量看着清楚,不怕长
qxyywy 2012-11-12
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
加一些缩进看起来会好一点。 如果你把所有C#程序全部写在一行中(编译器允许你这么做),也会够呛的。
++1 实在觉得人为加太麻烦就用工具中的 format code=》format (ctrl+F11)
csdn_风中雪狼 2012-11-12
  • 打赏
  • 举报
回复
还好, 我最近也在开发这种签字流程的业务系统, sql语句也是相当的长,
qxyywy 2012-11-12
  • 打赏
  • 举报
回复
引用 楼主 qingYun1029 的回复:
不说语句质量及难易度。。 我想知道大家遇到这钟情况一般怎么处理??? 是分到不同包含查询语句的函数里面还是像我这样一条语句写出来??? 这条语句查询出来的都是一个页面上的所以“页签”所包含的内容,最后拼接如下: SQL code1234567891011121314151617181920212223242526272829SELECT WF_w_……
我想说 若是给你个300多行的SQL 而且到处的join ,union,case,聚合函数,这种还得了
qingYun1029 2012-11-12
  • 打赏
  • 举报
回复
引用 6 楼 microtry 的回复:
1.单纯从长度上说,这个就是一小段代码而已; 2.从设计角度说,sql开发尽量采用动态sql方式, 这样可以把常用的数据对象的查询方法进行封装, 实际上,充分利用数据库的视图,表,函数和动态sql,也可以产生类似OOPL的效果,大幅度的减少数代码量
嗯,谢谢啦!!!
  • 打赏
  • 举报
回复
哎,现在这个项目居然整出来了近万行的存储过程了,真无言了
紫魂一号 2012-11-12
  • 打赏
  • 举报
回复
适当的使用视图或函数吧。还有可以利用 with语法还不错,层次感强一点,思路也会清晰。。
Im_yours 2012-11-12
  • 打赏
  • 举报
回复
·要注意注释和规范啊·其实我个人感觉 sql处理起来要比 c#快· 一般能在SQL里面解决的 都在那里解决了·
qingYun1029 2012-11-12
  • 打赏
  • 举报
回复
谢谢各位啦。。。。 还以为写的太长呢。。。。。
xugang96 2012-11-11
  • 打赏
  • 举报
回复
还好啦,我经常写这么长的
kensouterry1 2012-11-11
  • 打赏
  • 举报
回复
要看你擅长做什么处理了,如果你对SQL的处理比较熟练,那么建议尽量使用SQL来处理所有逻辑,界面层直接绑定即可。如果你不擅长写SQL语句,逻辑可以调整到外面c#处理……
lude8880 2012-11-11
  • 打赏
  • 举报
回复
随便。。。。。
缪军 2012-11-11
  • 打赏
  • 举报
回复
1.单纯从长度上说,这个就是一小段代码而已; 2.从设计角度说,sql开发尽量采用动态sql方式, 这样可以把常用的数据对象的查询方法进行封装, 实际上,充分利用数据库的视图,表,函数和动态sql,也可以产生类似OOPL的效果,大幅度的减少数代码量
threenewbee 2012-11-10
  • 打赏
  • 举报
回复
加一些缩进看起来会好一点。 如果你把所有C#程序全部写在一行中(编译器允许你这么做),也会够呛的。
加载更多回复(4)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧