计算机上是否可以实现这样的操作。急,急,急!!!!!!!(161分)

  • 主题发起人 主题发起人 freesoft
  • 开始时间 开始时间
F

freesoft

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库中有两张表A,B
A为(id,dj,xsj,lr)
B为(id,dj,xsj,lr,bb)
A为销售表,B为退货表,
A id dj xsj lr
001 90 100 10
002 30 50 20
003 50 30 -20
B id dj xsj lr bb
001 -90 -110 -20 是
要求为如果A中出现001,B中出现001
则在报表中打印两条记录的和,在报表中
只出现一条记录,如上就是只出现001这
条记录。
id dj xsj lr
001 0 -10 -10
002 30 50 20
003 50 30 -20
另外要做复合报表是
A id dj xsj lr
002 30 50 20
003 50 30 -20
下面是
B id dj xsj lr bb
001 0 -10 -10 是
情况也和上面一样要求出现两条001则
去掉A表中的001
在B表中把001条记录,加A表中的001
 
不可以这样,你只选出了一条记录,其他的记录不是没有了吗!
 
刚收到你的message,不过楼上已经答的很正确了,我没有什么要说的了
这只是一个普通的多表关联的SQL而已,关键要会使用 AS 关键字
建议你多看看SQL方面的书
 
刚才没有写完! [:D]
 
刚收到你的message,来晚了
 
第一种情况看起来可以了,不过第二中情况
我要求有一个复合报表,A id dj xsj lr
002 30 50 20
003 50 30 -20
下面是
B id dj xsj lr bb
001 0 -10 -10 是
处理方法和上面雷同,不过要把A表中001那条去掉,不知道怎么处理好!数据库内的记录
又不能删除!
 
刚收到message~
jrq大侠都写出来了啊
select A.id,A.sxj,A.lr from A
where A.id not in (select B.id from B)
 
1.这样可以达到要求:
str:= ' (select A.id,(A.dj+B.dj) as DJ,(A.xsj+B.xsj) as XSJ,(A.lr+B.lr) as LR '+
' from A,B where A.id=B.id ) '+
' union (select A.id,A.dj,A.xsj,A.lr from A '+
' where A.id not in (select B.id from B)) ';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(str) ;
query1.Open;

调试通过,正好和你的要求结果相符!
-------------
[:D] 刚才是正在写呢!
 
》我要求有一个复合报表A
》下面是 B
》处理方法和上面雷同,不过要把A表中001那条去掉,不知道怎么处理好!数据库内的记录
》又不能删除!

看了几遍这话,还是读不懂你的意思! 生成一张符合表吗?
再详细明白一点~
 
就是数据库中是
A为销售表,B为退货表,
A id dj xsj lr
001 90 100 10
002 30 50 20
003 50 30 -20
B id dj xsj lr bb
001 -90 -110 -20 是
生成复合报表后是
A id dj xsj lr
002 30 50 20
003 50 30 -20
下面是
B id dj xsj lr bb
001 0 -10 -10 是
你看见没有A中的001记录没有了,而B中的记录001为
原先(A中001)+(B中的001)合成一条新的001记录!
 
这是合成后的:
id dj xsj lr
001 0 -10 -10
002 30 50 20
003 50 30 -20

那复合表是不是等于是把合成后的再拆分成A、B吗??????
是这个意思吗????
----------------------------
复合A 用完颜老兄的那条就行了
str:= ' select A.id,A.dj,A.xsj,A.lr from A '+
' where A.id not in (select B.id from B) ';
//找到(除去包含在B中的)A中的所有记录!

复合B 就是这个:
str:= ' select A.id,(A.dj+B.dj) as DJ,(A.xsj+B.xsj) as XSJ,(A.lr+B.lr) as LR '+
' from A,B where A.id=B.id ';
//原先(A中)+(B中)相同的ID合成新的记录!
------------------------
其实刚才那个就是用这两个union链接起来的!

当然,你在作报表的时候肯定还要作其他的工作!
 
多人接受答案了。
 
后退
顶部