这是我花了一个多小时写的SQL,真实的项目,大家从数据库设计的角度看看存在什么问题?

s0611163 2016-12-09 06:13:09
这是我花了一个多小时写的SQL,真实的项目,大家从数据库设计的角度看看存在什么问题?
SQL还没完全写好。

string sql = @"select distinct
pos.billNo as '单据编号',
pos.projectCode as '项目编号',
pro.projectName as '项目名称',
pos.subProject as '项目子项',

case when cs.conMemberCode is not NULL then cs.conMemberCode else mat.materailCode end as '构件编码',
case when cmd.conMember is not NULL then cmd.conMember else mat.materialName end as '材料名称',
case when cs.conMemberCode is not NULL then '构件' else '物料' end as '类型',

mad.model as '规格型号',
t2.dicItem as '材质',
mad.qty as '调拨数量',
t1.dicItem as '单位',
--bpd.weight as '单量',
t4.dicItem as '单量单位',
--convert(decimal(10,2),(cmd.weight*posd.qty)) as '总量',
t3.dicItem as '总量单位',
posd.qty as '出库数量'

from Pro_ProductOutstorageDet posd
join Pro_ProductOutStorage pos on pos.id=posd.parentId
join Pro_MatAllotDet mad on posd.matAllotDetId=mad.id
join Pro_MatAllot ma on ma.id=mad.parentID and ma.status=2
left join Pro_MatStock ms on ms.id=mad.matStockId and mad.memberType=1
left join Pro_ConStock cs on cs.id=mad.matStockId and mad.memberType=0
left join sys_material mat on mat.materailCode=ms.mat.materailCode

left join Pro_ConPurInstore cpi on cs.billNo=cpi.billCode
left join Pro_ConPurInstoreDet cpid on cpi.id=cpid.parentId and cs.billId=cpi.id
left join dbo.Pro_ConGoodsDet cgd on cgd.id=cpid.conGoodsDetId
left join dbo.Pro_ConPurchaseContractDet cpcd on cpcd.id=cgd.conContractDetId
left join dbo.Pro_ConPurchasePlanDet cppd on cppd.id=cpcd.conPlanDetID
left join dbo.Pro_ConMemberDet cmd on cmd.id=cppd.conMemberDetId

left join Pro_Info pro on pos.projectCode=pro.projectNum
left join sys_dicDetail t1 on t1.dicItemcode=mad.unitCode
left join sys_dicDetail t2 on t2.dicItemcode=mad.qulity

left join sys_dicDetail t3 on t3.dicItemcode=cmd.allWeightUnit
left join sys_dicDetail t4 on t4.dicItemcode=cmd.weightUnit
" + where;

return sql.ToString();
...全文
149 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
把分全给哥 2016-12-09
  • 打赏
  • 举报
回复
不错不错
s0611163 2016-12-09
  • 打赏
  • 举报
回复
引用 1 楼 wzx19840423 的回复:
联这么多表是要搞死搞残的节奏吗
因为我要查一个物料或构件名称,所以要连很多表才能查到,而且物料和构件,连的表也不一样。
  • 打赏
  • 举报
回复
联这么多表是要搞死搞残的节奏吗

588

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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