求评价!写以下SQL人员在各位眼中是个什么水平?
Select W_CKZB.*, Case When IsNull(CJYS_DDZB.YWBH,'') <> '' Then CJYS_DDZB.YWBH Else CJYS_DDGLB.YWBH End YWBH
From W_CKZB
Left Join (Select ID, YWBH From CJYS_DDZB) As CJYS_DDZB On CJYS_DDZB.ID = W_CKZB.CYDID
Left Join (
Select W_CKHWB.CKZBID, DDGLB.YWBH From W_CKHWB Inner Join (Select ID, YWBH From CJYS_DDGLB) As DDGLB On DDGLB.ID = W_CKHWB.DDGLBID
Group by W_CKHWB.CKZBID, DDGLB.YWBH
) As CJYS_DDGLB On CJYS_DDGLB.CKZBID = W_CKZB.ID
不看数据表的关系,通过以上语句语法,各位评定下,写这个sql的人是个什么水平? 简单来说,是一个可以完成任务,可以要他加班的人,但是当不了一个高层次的程序员
[解决办法]
一般水平.
LZ想干嘛?
[解决办法]
我也是这样的水平,看来是水平不怎么样啊!!!!
[解决办法]
你猜对了,常见的问题就是你觉得的这些问题
[解决办法]
建议LZ了解一下数据库性能优化方面的书..
当然,仅仅有技术不一定就能优化的,最好要结合一下业务逻辑进行分析和优化.
[解决办法]
每个人都是一步一步走过来的。
[解决办法]
当然没有快速的途径,我从数据库给几个个人意见,有些是工作中的总结,排名不分先后:
1、开发sql时,不要用面向过程的思想,比如游标、循环,除非你实在不会。
2、设计,多花点时间吧,这个真的太要命了。
3、注释,不多说了。
4、每个人肯定都由简单的sql开始学起的,但是一边写一边思考很重要,很多人为了完成任务,最终却因为性能过于低下,有些时候甚至无法部署,结果就是没有完成任务。得不偿失。
5、多和你觉得厉害的人交流,这个倒是快速路径。
6、有时候可以用空间换时间的方法来临时解决一些性能问题,比如把经常需要计算的东西,评估是否有必要预先或者定期存起来。
7、多看书,这个也不说。
8、心态,很多人觉得自己做了很多年“开发”已经很资深,我的很多建议他们根本就不想听,特别是听不懂的时候,但是连select into都可以写成select * from tb into #t这样的格式,我当时无语了。
9、编码的话,有一本书挺好的《sql语言艺术》,颠覆你的编程习惯。
10、多熟悉业务,多与人商量,特别在设计阶段。
11、练,我毕业的时候只听过存储过程,后来被迫写了过千个(1年时间),好不好我不说,最起码我会写了。
还有很多,其实也很少,上班求生存,下班求发展,你懂得。废话比较多,有没有用就看你自己了
[解决办法]
有经验,无水平的人
[解决办法]
Select W_CKZB.*, Case When IsNull(CJYS_DDZB.YWBH,'') <> '' Then CJYS_DDZB.YWBH Else CJYS_DDGLB.YWBH End YWBH From W_CKZB
Left Join (Select ID, YWBH From CJYS_DDZB) As CJYS_DDZB On CJYS_DDZB.ID = W_CKZB.CYDID
Left Join (
Select W_CKHWB.CKZBID, DDGLB.YWBH From W_CKHWB Inner Join (Select ID, YWBH From CJYS_DDGLB) As DDGLB On DDGLB.ID = W_CKHWB.DDGLBID
Group by W_CKHWB.CKZBID, DDGLB.YWBH
) As CJYS_DDGLB On CJYS_DDGLB.CKZBID = W_CKZB.ID
红色字体可能是写错了吧?
还有关联的第二个表在select语句里只用到一个字段,关联第三个表根本没有用到字段,这样关联不知道是抄过来的,还是你给的代码不完整?
[解决办法]
这个不能说明一个人的水平,太片面了.
[解决办法]
sql水平比我高的人,^_^
[解决办法]
为完成任务写的吧
[解决办法]
Select W_CKZB.*, Case When IsNull(CJYS_DDZB.YWBH,'') <> '' Then CJYS_DDZB.YWBH Else CJYS_DDGLB.YWBH End YWBH
From W_CKZB
Left Join (Select ID, YWBH From CJYS_DDZB) As CJYS_DDZB On CJYS_DDZB.ID = W_CKZB.CYDID
Left Join (
Select W_CKHWB.CKZBID, DDGLB.YWBH From W_CKHWB Inner Join (Select ID, YWBH From CJYS_DDGLB) As DDGLB On DDGLB.ID = W_CKHWB.DDGLBID
Group by W_CKHWB.CKZBID, DDGLB.YWBH
) As CJYS_DDGLB On CJYS_DDGLB.CKZBID = W_CKZB.ID
上面的代码同等于下面的结果:
Select W_CKZB.*, CJYS_DDZB.YWBH
From W_CKZB
Left Join CJYS_DDZB On CJYS_DDZB.ID = W_CKZB.CYDID