各位朋友:
向您请教一个关于VB+Access问题, 用SQL Server 也可以
下列代码测试通过,是创建视图时用到的一条SQL字串,但查询的结果集非常多,相当于表与表之间的记录一一生成可能最大的组合,我在实际查询时还用了
select * from 视图名 where 系统编号=... 但得到的结果集也有几千条,实际上应该为几笔记录,不知条件在创建视图时还应该加什么条件?我要实现的结果是按照系统生成的编号按系统编号查询,请朋友指点一下,谢谢
表结构如下:
物料进出主表: Tbl_Stk_In_Main 主键:系统编号 别名;InMain
字段(系统编号,单据编号,来源单号,对方单位,入库日期 ,转入仓区,转出仓区,录入员,录入时间)
进出明细表: Tbl_Stk_In_List 主键:系统编号 行号(组合主键)别名;:InList
字段(系统编号,行号,料品编码,入库数量,备注,审核,打开,锁定,)
物料单价表: Tbl_Bas_Price 主键:料品编码 别名;MPrice
字段(料品编码,货币单位名称,单价)
物料清单表: Tbl_Bas_Material主键:料品编码 别名;Material
字段(料品编码,料品名称,规格型号,计量单位名称)
"Select Distinct InMain.系统编号,InMain.单据编号,InMain.来源单号,InMain.对方单位,InMain.入库日期,InList.行号,Material.料品编码," & _
"Material.料品名称,Material.规格型号,Material.计量单位名称,InList.入库数量,MPrice.单价,InList.入库数量 * Mprice.单价," & _
"InList.备注,InMain.转入仓区,InMain.转出仓区,InList.审核,InList.锁定,InList.打开,InMain.录入员,InMain.录入时间 " & _
"From Tbl_Mat_Price As Mprice,Tbl_Bas_Material As Material,Tbl_Stk_In_Main As InMain ,Tbl_Stk_In_List As InList " & _
"Where Mprice.料品编码= Material.料品编码 And InMain.系统编号=InList.系统编号")
我为了减少数据的冗余性,在物料入库时,Tbl_Stk_In_Main 主表上字段内容仅写入一次,对Tbl_Stk_In_List的值一一写入(因为一张单有多笔记录),所以在查询时需从多个表中查找,运行时,查找结果是有,但有很多是不需要的,根据上面的SQL语句,若系统编号为A00001,人有5条记录,物料清单表(假设有500条记录),它会生成2500条记录,如果我有10张单号,则会生成25000条记录