首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

(急求)多表联合查询-万分感谢(解决了马上结帖),该如何处理

2012-02-29 
(急求)多表联合查询--万分感谢(解决了马上结帖)我有四个表orderinfo、表InputMateriel、表OutputMateriel、表

(急求)多表联合查询--万分感谢(解决了马上结帖)
我有四个表orderinfo、表InputMateriel、表OutputMateriel、表StockPileInfo
-----------InputMateriel表结构如下:---------------------订料表
类型         供应商名   订料单号   订料名称       数量           要求到料时间   实际到料时间
ordtype   proname     ordmcode   orddsMname   ordNumber       ordSqdata       ordsjdata
-----------InputMateriel表结构如下:---------------------来料表
类型         来料时间   来料单号   料名,供应商,来料数    
Ipttype   mdata         Iptmcode   mname   pname       Iptmnum  
-----------OutputMateriel表结构如下:--------------------发料表
类型         来料时间   来料单号   料名,供应商,来料数    
Opttype   mdata         Optmcode   mname   pname       Optmnum    
-----------StockPileInfo表结构如下:---------------------库存表
类型     料名       库存数
Stotype   mname     Stomnum       进料之前此表是空表
-------------------------------------------------------
原始数据
-------------------------------------
select   *   from   OrderInfo
结果:类型   供应商名   订料单号   订料名称     数量       要求到料时间   实际到料时间
            1001   一厂           A-1001       电源             200         2007-04-10       2007-04-12
            1001   一厂           A-1002       电容             100         2007-04-12       2007-04-12  
            1001   一厂           A-1003       电源             500         2007-04-18       2007-04-19

select   *   from   InputMateriel  
      结果:类型     料名   供应商   来料单号   来料时间       来料数  
                1001     电源     一厂     AL-1001       2007-04-12     200        
                1001     电容     一厂     AL-1002       2007-04-15     100
                1001     电源     一厂     AL-1003       2007-04-19     500                
select   *   from   OutputMateriel  
      结果:类型     料名   供应商   发料单号   发料时间    发料数
                1001     电源     一厂     AF-1001       2007-04-13     100
                1001     电源     一厂     AF-1002       2007-04-15     30
                1001     电源     一厂     AF-1003       2007-04-16     20
                1001     电容     一厂     AF-1004       2007-04-16     50


                1001     电容     一厂     AF-1005       2007-04-18     20

select   *   from   StockPileInfo   (此表实时更新,来一批料现库存+来料数,发一批料现库存-发料数)
结果:类型 料名 现库存    
          1001     电源 550    
          1001     电容 30
-------------------------------------
注释:1、(来料时间=实际到料时间)2、(现在库存=原库存+来料数-发料数)
一种类型可以有很多种料...
-------------------------------------
怎么按(类型、料名、时间结合四个表查询得到如下结果:按时间排序(也要能           按   型号+料名+时间)具体细化查询,总休查询才无所谓,主要是能具体细化查询

1、(总体查询)
订料单号   类型   料名   来料单号   来料时间   来料数量   发料单号   发料时间   发料数量   库存
A-10011001   电源   AL-1001   2007-04-12     200           NULL             NULL               NULL     200
A-10011001   电源   NULL         NULL       NULL       AF-1001       2007-04-13   100       100
A-10011001   电源   NULL         NULL       NULL       AF-1002       2007-04-15   30         70
A-10011001   电源   NULL         NULL       NULL       AF-1003       2007-04-16   20         50
B-10011001   电容   BL-1001   2007-04-15     100           NULL             NULL               NULL     100
B-10011001   电容   NULL         NULL       NULL       BF-1004       2007-04-1     50         50
B-10011001   电容   NULL         NULL       NULL       BF-1005       2007-04-1     20         30

2、****(具体细化查询)   假如按   类型为:1001    
                                                    料名为:电源
                                                    时间为:   between   '2007-04-11 '   and   '2007-04-20 '
                                                    排序     :   来料时间   发料时间
得到的结果如下:
订料单号类型料名来料单号   来料时间   来料数量   发料单号   发料时间   发料数量   库存
A-1001   1001   电源   AL-1001   2007-04-12     200         NULL             NULL             NULL     200
A-1001   1001   电源   NULL         NULNULL       AF-1001       2007-04-13   100     100
A-1001   1001   电源   NULL         NULLNULL       AF-1002       2007-04-15   30       70


A-1001   1001   电源   NULL         NULLNULL       AF-1003       2007-04-16   20       50
A-1001   1001   电源   AL-1003   2007-04-19     500         NULL             NULL             NULL     550
{                       来发总数                       }           700         NULL             NULL             150       550

[解决办法]
数据太多,先做个记号,下班后look一下。

[解决办法]
看得有点晕
[解决办法]
LZ估计是查询时不知道库存怎么取了吧?其他的我看倒很简单,用UNION连接下,从2个表查询,计算库存的,LZ可以写一个函数,在函数里按订料单号计算,这样总体就能对应了

热点排行