怎么算出的结果是两倍啊

njpyxujin 2003-08-24 09:45:35
这是我写的程序,从两张表里查询
dm.queryin.Close;

dm.queryin.SQL.Clear;
dm.queryin.SQL.Add('select tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位,sum(数量) ''入库数量'',sum(领用数量) ''领用数量'' ,sum(数量)-sum(领用数量) ''库存数量'' from tb_sourout');
dm.queryin.SQL.Add('join tb_sourin');
dm.queryin.SQL.Add(' on (tb_sourin.原料名称=tb_sourout.原料名称)');
dm.queryin.SQL.Add('where tb_sourin.入库日期 like''%'+edit2.text+'%'' ' );
dm.queryin.SQL.Add('and tb_sourout.领用日期 like''%'+edit2.text+'%'' ');
dm.queryin.SQL.Add('group by tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位');
dm.queryin.Active:=true;
dm.queryin.Open;
兄弟们看看,是怎么回事啊
...全文
181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
njpyxujin 2003-08-30
  • 打赏
  • 举报
回复
我还是用别的方法解决了,谢谢大家.
karach 2003-08-24
  • 打赏
  • 举报
回复
我本来有话说的,现在我也是无言……
njpyxujin 2003-08-24
  • 打赏
  • 举报
回复
我想到是主键问题了,仓库同种物品出库入库有多条记录,
我按物品名查询,当然有问题,但我不知道怎么解决,
njpyxujin 2003-08-24
  • 打赏
  • 举报
回复
不是两倍问题,有多少条记录就是多少倍的问题了,
njpyxujin 2003-08-24
  • 打赏
  • 举报
回复
就是 三个求和的值都是两倍了,我再查查看
chl_ccssddnn 2003-08-24
  • 打赏
  • 举报
回复
是哪个值翻倍?
我在我这边已经测试过了,是正确的。
如果方便,你可以把一个测试用的数据库发给我access,sql server的都可以,我在我这里再测试一下。
我现在开了个ftp,仅几天有用:ftp:210.28.76.3 user:thanks password:thanks
当然不要涉及你们的秘密,你来个模型就可以了
njpyxujin 2003-08-24
  • 打赏
  • 举报
回复
不行啊,还是翻倍了啊
njpyxujin 2003-08-24
  • 打赏
  • 举报
回复
To caohonglong2000(chl)
用你的方法还是翻倍了啊,在SQL里这么写的
select tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位,sum(数量) '入库数量',sum(领用数量) '领用数量' ,(sum(数量)-sum(领用数量)) '库存数量'
from tb_sourout,tb_sourin

where(tb_sourin.原料名称=tb_sourout.原料名称 and tb_sourin.入库日期 like '2003-8%' and tb_sourout.领用日期 like'2003-8%')

group by tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位
zhangxinji 2003-08-24
  • 打赏
  • 举报
回复
dm.queryin.Close;
dm.queryin.SQL.Clear;
dm.queryin.SQL.Add('select tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位,sum(数量) ''入库数量'',sum(领用数量) ''领用数量'' ,sum(数量)-sum(领用数量) ''库存数量'' from tb_sourout,tb_sourout');
dm.queryin.SQL.Add('where tb_sourin.原料名称=tb_sourout.原料名称 and tb_sourin.入库日期 like''%'+edit2.text+'%'' ' );
dm.queryin.SQL.Add('and tb_sourout.领用日期 like''%'+edit2.text+'%'' ');
dm.queryin.SQL.Add('group by tb_sourout.原料名称,tb_sourout.规格,tb_sourout.计量单位');

dm.queryin.execsql;
dm.queryin.active:=true;
你再试试
zhoutian618 2003-08-24
  • 打赏
  • 举报
回复
看看是不是join tb_sourin的时候造成数据的重复。翻倍。
chl_ccssddnn 2003-08-24
  • 打赏
  • 举报
回复
这样,你不要用join,这样形成表的联结。
直接采用这种形式,from tb_sourout,tb_sourin
这样你的问题应该可以解决了

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧