我现在有两张表是关于物料进仓和出仓的两张表和一张物料信息表,现在我想查询出物料的信息以及进出仓日期,
以下是我写的代码:
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数据库)
以下是我写的代码:
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数据库)
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 /*备注*/
)
left join
right join
inner join
之类的。也许我回答的不是标准答案,仅供参考!
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要根据具体情况来看,这种情形,只要其他两表的与单号匹配信息。多余信息显示无用,显然也不合实际。手写的,没有调试,有问题的话,说一下。