谁肯拉小妹一把?(50分)

  • 主题发起人 主题发起人 冰雪
  • 开始时间 开始时间
SELECT 日期,编号,
(select sum(数量) from 入库 BBB where (BBB.日期=AAA.日期) and (BBB.编号=AAA.编号)) AS 入库,
(select sum(数量) from 出库 BBB where (BBB.日期=AAA.日期) and (BBB.编号=AAA.编号)) AS 出库
FROM (select distinct 日期,编号 from 入库
union select distinct 日期,编号 from 出库) AAA
ORDER BY 日期,编号

结余数无法用SQL得到,只能自己计算
ACCESS及MS SQL支持以上语句,PARADOX是不支持的
 
看来我以后也借用“小妹”这个词来提问,,呵呵,,,,

对于帐目的问题,我不清楚是郎个运作的,但查询一下数据库表应该没什么问题吧:)

你可以联合查询A和B,并且进行分组,象下面的查询:

select aTable.产品代码,bTable.产品代码
from aTable,bTable
group by 产品代码
order by 产品代码
distinct

我没用过PARADOX,我用的是Oracle,所以不知道它是否支持 distinct ,只有你查查资料
或试一试了,,,
 
你们是为MM来的还是为问题来的。
不管为谁来的,我先帮你们提提。
 
都有的塞:)
 
你所要的这个结果,是不能用一条SQL来实现的,我有一个foxpro的源程序,
里面有一个与之类似的东西,是说借书与还书及剩余书的,借书相当于购进,
还书相当于出库,剩余书那就是相当于库存了,
实现这样的功能,那里用到了多条SQL及其它一些语句,
我先研究研究,等弄好了,我再给你发贴。
 
我把我的补充完整了吧:)
查询入库:
select aTable.产品代码,bTable.产品代码,aTable.Import,bTable.Import
from aTable,bTable
where Import=入库
group by 产品代码
order by 产品代码
distinct

查询出库:

select aTable.产品代码,bTable.产品代码,aTable.Export,bTable.Export
from aTable,bTable
where Export=出库
group by 产品代码
order by 产品代码
distinct

用多表联合查询或复合查询,就可以把你要的东西找出来,在具体写查询语句的时候,特别
要注意效率问题,,,,
 
[:D][:D][:D]
看啊,英雄救美大挑战!

拿过来吧,这么简单,我包了!

我是不是很豪爽?

其实我不会!

纯属灌水!

冰雪莫怪!

有这么多大侠,我也伸不进手去,那就让我喊几声口号吧:
加油!加油!加油!加油!加油!加油!

[:D][:D][:D][:D]
 
TO:HEYTOMMY
先谢谢你,虽然我还是看不懂你的代码,但比起有些人来,你真的有大侠的胸怀。



所有的好汉们,我真的不相信你们编进销存软件时没有遇到过这种问题,帮帮手吧,
不在乎你的灌水,只在乎你的到来,该出手时就出手,万一让你一不小心弄好了,
你就是“大富翁论坛”的大哥大,大大哥啦!!!我在随时等候你的好消息!!!!
 
啊?看不懂我的代码?失败。。。。。:(

我写的是类SQL代码,,呵呵,,

你可以把sql语句加到诸如TQuery控件中,用TQuery.execute或 TQuery.open来启动查询

你把你的表结构给我,,关键的几个也行,我可以给你实际的SQL
 
冰雪,你把你的表与你的要求发到我邮箱来。
你要写清楚你的要求。我这人理解力好像有问题,最近老是误解。
 
Nizvoo@etang.com
 
我按照我对你提出的一堆条件的理解,写段SQL代码给你:

入库操作:

insert into 入库表(产品代码,日期,入库数,出库数,结余数)
values('A',StrToDateTime('2002-07-30 12:34:23'),10,0,10)

出库操作:

insert into 出库表(产品代码,日期,入库数,出库数,结余数)
values('A',StrToDateTime('2002-07-30 12:34:23'),0,5,5)

查询操作:

(注意:你需要把查询结果显示在DBGrid中,就有你要的效果了,我给出查询SQL,如下:)

MyQuery:TQuery;


with MyQuery do
begin
Close;
Sql.clear;
Sql.Add('Select 产品代码,日期,入库数,出库数,结余数'+
' from 入库表,出库表'+
' group by 产品代码'+
' order by 日期 ASC'
);
Open;
end;

如果你的字段不只这几个,select 语句后面可使用 * ,

上面的查询是以“产品代码”为组,按日期升序排列查询结果,

产生的结果如下所示:

产品代码 日期 入库数 出库数 结余数
A 2002-07-30 10 10
A 2002-08-01 5 5
B 2002-07-29 10 10
B 2002-08-02 5 5

等,,,,,

对于你进行入库操作的时候,字段对应的值可以用变量来代替实际的值,
在出库操作的时候,插入出库记录的“出库数,结余数”可以用入库的值于出库值进行简单的算术运算得到,
我就不多说了,,,
 
唉,还是女孩的帖子值钱啦!
 
to:sword_liu

呵呵,,谁叫你也不是个mm呢?:)呵呵,,


你没看到mm急得都不行了吗?还是有点男士风度塞:)
 
[:D][:D][:D]
我早提过建议了,那位大侠就大方一点,全包了得了,省得这个那个的麻烦!

[8D][8D][8D]
其实我不好意思说,但还是想说:冰雪你还是先跟着有经验的程序员作一段时间、学
一段时间再独立编程吧。不是我不想帮你,只是……
问题太简单!可见你基础都不太好。解决了这个问题,后面还有一大堆问题呢!
你能一路让人帮下去?

可能有点伤你自尊,但我说的是实情。
不好意思,可能靓女以后恨死我,都怪我多嘴,祸从口出嘛!
 
看了看那个foxpro的源程序,将他的大意整理如下,希望对你有帮助:
1 除了你的入库表和出库表外,还做个未出库表,这个未出库表的记录来源于每一笔入库
试想一下,刚入库的同时在未出库表中也记录一下,这是很合乎常理的,也有利于以
后计算剩余库存数
2 以未出库表为基准表,每次查询时用SQL生成一个临时表,结构与基准表一样,内容可
照自己的条件加上限制
3 打开未出库表,并限制要操作的记录的范围,从头到尾扫描每一笔记录,当扫描
每一笔记录的时候,用这条记录与在第二步中生成的临时表的每一条记录进行比对,
符合条件的就将剩余库存量加1或减1.这可以用二重循环来实现.
4 用Sql将第三步中选出来的数据保存到一个新的临时数据表中.
5 用SQL将前面四步中提到的表的有用字段关联起来,显示在一个DBgrid中即做成了
一个有用的查询.
 
没说的.

我服了 大家了.

都 会. 谁 也不回答.

就 为了和人家 套话.
 
如果你将每个月的入库和出库记录都单独存放在临时表里那
我在不知道你全部表结构的情况下无法解决。
如果不是,下面语句:
select a.*,b.*
a left outer join b
on a.A=b.A
已经可以将a表(入库表)所有的数据查询出,
只需要再用where筛选一下符合时间条件的记录即可,是可以达到你的要求。
如果你真是每个月记录放在一个临时表里
请你提供详细表结构。
 
明天我也去注册个女人的名字,然后我的题目也带点香艳。。。哈哈哈哈哈~~~~
 
TO LOTOSTREE:
下面我列出用到的表结构,但愿你能帮助我
其实,在我的程序里,入库表包括 入库表目录 和 入库表明细,
目录表里面记录的是一张单据里不变的数据,比如是单号、客户或供货商、出货仓库、
日期等;明细表里面记录的是单据项,包括单号、商品代码,数量等;
我数据库里还有一个产品资料表,有商品代码、型号、名称、等级、类别、品牌等;其中
等级也是一个表(等级表),有等级代码和等级名称两个字段,类别和品牌也一样,
当然我希望在DBGRID里面显示出来的不是一些代码,是名称,比如说我不想显示产品代码,
我想要显示产品的名称和型号,等级、类别、品牌等也一样,我还要实现可以让用户选择
是从哪个日期到哪个日期,什么品牌、什么型号、什么客户或什么供货商、什么仓库进行
汇总,上面好多位热心的兄弟姐妹们都提出了用“select a.*,b.* from A left outer b
on a.A=b.A,我想这只能查出A里面有的所有记录的产品代码,如果是下面的:
产品代码 日期 入库数 出库数 结余数
A 2002-07-30 10 10
B 2002-08-01 5 5
我想不可能查出B来,但在日常当中,B产品在这个月里面只有出库,没有入库是很正
常呀,还有,HEYTOMMY上面提到了“结余数”字段,那得很严格的按照日期先后的顺序
开单“结余数”才准确,但我公司的业务要求今天可以开前天或后天的单,日期很随意
我想在查询里面按日期顺序通过一种什么方法能够查出每一条记录的结余数。
哎,我头都大了,也许真的象PYZFL说的,我该忍痛割爱,向DELPHI说886,但我实在很
欣赏你们会编程呀
 
后退
顶部