我现在有两张表是关于物料进仓和出仓的两张表和一张物料信息表,现在我想查询出物料的信息以及进出仓日期,
以下是我写的代码:
select Gno,Gname,Gtype,Gunit,Idate,Inumber,Odate,Onumber,Gnumer
from j060229goods,j060229input,j060229output
where j060229goods.Gno = j060229input.Igno and j060229input.Igno=j060229output.Ogno and Gno='1000'
查询出来的结果和我预期的是不一样的,物料代码为'1000' 的物料有7条进仓记录,对应了7个日期,出仓记录是3条,对应3个日期
我想要的结果是:
               物料信息  进仓日期 出仓日期
                   ~~~    4月*号   4月*号 
                 ~~~    4月*号   4月*号
                ~~~     4月*号   4月*号
               ~~~      4月*号   空
               ~~~      4月*号   空
               ~~~      4月*号   空
               ~~~      4月*号   空同样的要是出仓记录多与进仓记录的话,多出的出仓日期对应进仓日期那里也就为空,
该怎么做啊.请各位大虾帮帮小弟
(PS:我用的是sqlserver2000数据库)

解决方案 »

  1.   

    最好有这三张表的示例数据,j060229goods,j060229input,j060229output
      

  2.   

    刚才有事出去了,现在贴表的结构和示例数据
    create table j060229goods
    (
     Gno varchar(6)  primary key,     /*物料代码*/
     Gname varchar(8) not null,       /*物料名字*/
     Gtype varchar(6),                /*规格型号*/
     Gunit varchar(4),                /*计量单位*/
     Gnumer int,                      /*数量*/
     Gres varchar(100)            /*备注*/
    )drop table j060229input
    create table j060229input
    (
     Ino   varchar(10) ,         /*单号代码*/  
     Ipno  varchar(6) not null,                                /*操作人员代码*/
     Igno  varchar(6) not null,                                /*物料代码*/
     Inumber int      not null,                                /*进仓数量*/
     Idate datetime not null,                                  /*进仓日期*/
     Ires varchar(100) not null                            /*备注*/
    )
    drop table j060229output
    create table j060229output
    (
     Ono varchar(10),         /*单号代码*/  
     Opno  varchar(6) not null,                                /*操作人员代码*/
     Ogno  varchar(6) not null,                                /*物料代码*/
     Onumber int      not null,                                /*出仓数量*/
     Odate datetime not null,                                  /*出仓日期*/
     Ores varchar(100) not null                            /*备注*/
    )
      

  3.   

    例如 : 
    left join 
    right join
    inner join 
    之类的。也许我回答的不是标准答案,仅供参考!
      

  4.   

    支持这个答案就是说你现在全都是Gno,Gname,Gtype,Gunit,Idate,Inumber,Odate,Onumber,Gnumer ,这几个按语法应该是你的几个表,而你做的全是内连接,自然不会出现NULL这中,比如你在这几张表连接时用RIGHT JOIN 或LEFT JOIN (不知道你表的情况)应该就能解决这问题
      

  5.   

    Use [你的数据库名]
    go
    Select g.Gno , g.Gname , g.Gtype, g.Gunit, g.Gnumer , g.Gres ,input.Idate,output.Odate from j060229goods g ,  j060229input input, j060229output output where g.Gno=output.Ono and g.=input.Ino
    go要根据具体情况来看,这种情形,只要其他两表的与单号匹配信息。多余信息显示无用,显然也不合实际。手写的,没有调试,有问题的话,说一下。