根据BOM清单算出所有物料的总数的SQL怎么写? ( 积分: 300 )

  • 主题发起人 主题发起人 mengyulu
  • 开始时间 开始时间
M

mengyulu

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器BOM清单<br>服务器型号&nbsp;&nbsp;&nbsp;&nbsp;CPU个数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;硬盘个数&nbsp;&nbsp;&nbsp;&nbsp;1G内存条个数<br>A200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3<br>A350&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5<br>A380&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3<br>B420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3<br>B200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br><br>服务器属性表&nbsp;&nbsp;表名:FuWuJi<br>MyName&nbsp;&nbsp;&nbsp;&nbsp;Yanse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZhongLiang&nbsp;&nbsp;&nbsp;&nbsp;<br>A200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A350&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A380&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Blue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>配件表&nbsp;表名&nbsp;:BeiJian<br>MyName&nbsp;&nbsp;&nbsp;&nbsp;Yanse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZhongLiang<br>CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;<br>YinBan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;<br>NeiCun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br><br><br>物料清单表&nbsp;&nbsp;表名:MyBOM<br>ChenBin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CaiLiao&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SuLiang<br>A200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YinBan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NeiCun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A350&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A350&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YinBan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A350&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NeiCun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A380&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A380&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YinBan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>A380&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NeiCun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YinBan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NeiCun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YinBan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>B200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NeiCun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br>现在的是有一张订单,说明型号名中有A的服务各订10台,用SQL语句算出一共需要多少配件。答案应该如下:<br>CUP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;90<br>YinBan&nbsp;&nbsp;&nbsp;&nbsp;110<br>NeiCun&nbsp;&nbsp;&nbsp;&nbsp;110<br><br>但这句SQL怎么根据这三个表写呢?请有过这方面经验的同志发表看法,谢谢了!
 
写个过程算就是了,先写出来,再优化<br>你写的这么长,没几个有兴趣看下去的,至少我都没看<br>另外可以检索一下,这个问题问的不少
 
select....&nbsp;from&nbsp;(select&nbsp;...from..left&nbsp;join&nbsp;....)应该最有可能解决问题,但我实在没有头绪。<br>select.cpu..from...union&nbsp;(select&nbsp;&nbsp;YinBan..from...)union&nbsp;(select&nbsp;&nbsp;NeiCun..from...)&nbsp;&nbsp;这样是不行的,因为这个例子是只有三个配件,而实际工厂,有的东西由2个东西组成,有的由4,50个东西组成,要union多少次不确定呀。<br><br>还有就是,或许可以用存储过程,我的是单机版,不用这么麻烦,而且,我是要用DBGrid显示答案出来...
 
要写过程,实在SQL水平有限,下面写法是借用delphi写的({}里),哪位有空的同志看懂了,帮改写成纯SQLServer的语句,让我也学学存储过程的精妙之处,感激不尽呀!<br><br>select&nbsp;MyName&nbsp;as&nbsp;AAA&nbsp;from&nbsp;FuWuJi&nbsp;where&nbsp;MyName&nbsp;like&nbsp;'%A%',<br>{{first,<br>while&nbsp;not&nbsp;eof&nbsp;&nbsp;do,<br>&nbsp;begin<br>select&nbsp;CaiLiao,SuLiang*10&nbsp;from&nbsp;MyBOM&nbsp;where&nbsp;ChenBin=AAA&nbsp;into临时表BBB,<br>Next,<br>End}}<br><br>select&nbsp;&nbsp;CaiLiao&nbsp;,sum(SuLiang)&nbsp;from&nbsp;BBB&nbsp;Group&nbsp;By&nbsp;CaiLiao
 
不會是我寫得太長了,沒人有時間看呀,唉......在線等!
 
create&nbsp;proc&nbsp;test&nbsp;<br>as&nbsp;<br>declare&nbsp;@name&nbsp;varchar(100)<br>declare&nbsp;mycur&nbsp;cursor&nbsp;for&nbsp;<br>select&nbsp;MyName&nbsp;as&nbsp;AAA&nbsp;from&nbsp;FuWuJi&nbsp;where&nbsp;MyName&nbsp;like&nbsp;'%A%'<br>open&nbsp;mycur<br>fetch&nbsp;next&nbsp;from&nbsp;mycur&nbsp;into&nbsp;@name<br>while&nbsp;@@fetch_status&nbsp;=&nbsp;0&nbsp;<br>begin<br>&nbsp;&nbsp;select&nbsp;CaiLiao,SuLiang*10&nbsp;&nbsp;into&nbsp;临时表BBB&nbsp;from&nbsp;MyBOM&nbsp;where&nbsp;ChenBin=@name<br>&nbsp;&nbsp;fetch&nbsp;next&nbsp;from&nbsp;mycur&nbsp;into&nbsp;@name<br>end<br><br>close&nbsp;mycur<br>dEALLOCATE&nbsp;&nbsp;mycur<br>select&nbsp;&nbsp;CaiLiao&nbsp;,sum(SuLiang)&nbsp;from&nbsp;BBB&nbsp;Group&nbsp;By&nbsp;CaiLiao
 
谢谢李翔鹏帮我改写,你的代码我要好好学习。在等答案的时间里,我已想出答案,可能意思跟你的一样,只是写法不一样,我的答案如下:<br>select&nbsp;&nbsp;<br>(case&nbsp;when&nbsp;BJB.MinZi&nbsp;is&nbsp;null&nbsp;then&nbsp;'0'&nbsp;&nbsp;else&nbsp;BJB.MinZi&nbsp;end&nbsp;)&nbsp;as&nbsp;名称,<br>(case&nbsp;when&nbsp;Sum(BJB.&nbsp;ZongSu)&nbsp;is&nbsp;null&nbsp;then&nbsp;0&nbsp;else&nbsp;Sum(BJB.&nbsp;ZongSu)&nbsp;end&nbsp;)&nbsp;as&nbsp;数量&nbsp;<br>from&nbsp;<br>&nbsp;(select&nbsp;M.CaiLiao&nbsp;as&nbsp;MinZi,M.SuLiang*10&nbsp;as&nbsp;ZongSu&nbsp;&nbsp;from&nbsp;FuWuJi&nbsp;F&nbsp;left&nbsp;outer&nbsp;join&nbsp;MyBOM&nbsp;M&nbsp;on&nbsp;F.MyName=M.ChenBin&nbsp;&nbsp;where&nbsp;F.MyName&nbsp;like&nbsp;'%A%'&nbsp;&nbsp;&nbsp;)&nbsp;<br>&nbsp;as&nbsp;BJB&nbsp;<br>Group&nbsp;by&nbsp;&nbsp;BJB.MinZi<br><br><br>暂时不结贴,给路过的初学者一个提示吧…几天后把分都给你!
 
tks!!!!!!!!!!!!!!!!!!
 
后退
顶部