起步软件技术论坛-X3

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: 刺青

【搞定】怎么取得数据集的记录**

[复制链接]
 楼主| 发表于 2007-6-6 15:23:44 | 显示全部楼层
嗯,不会忘记的

zfang 的方法只能显示两个表都匹配的记录(不过,还是非常感谢zfang)。也就是说,如果我有个表中只有一条记录的话,就之后的结果集就只有一条记录了,这个方法就好像取两个表的交集,这样不能实现我要的功能。我要的功能是:全部记录都显示出来,把别一个表中的记录的数量减去而已。用了内联,左联或右联都不可以实现,就算是显示出来,但统计数量里也没有值。
回复 支持 反对

使用道具 举报

发表于 2007-6-6 16:25:10 | 显示全部楼层
还是有办法可以用一个SQL语句来实现,但是效率会比较低!
你可以尝试用如下SQL:
--A/B两个表中商品编号相同的记录可以进行加减(排除NULL的记录)
select N.SPBH,(N.lSL - M.lSL) As lSL from (select SPBH,sum(Sl) As lSL from A
group by SPBH) As N Left Join
(select SPBH,sum(Sl) As lSL from B
group by SPBH) As M ON N.SPBH = M.SPBH where M.lSL is not null
--对于A表有的而B表没有的记录
union select SPBH,SL from A where SPBH Not In (select SPBH from B)
--对于B表有的而A表没有的记录
union select SPBH,SL from B where SPBH Not In (select SPBH from A)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-6 17:49:03 | 显示全部楼层
SELECT SPXX.SPXX_SPBH, SPXX.SPXX_SPQM, SPXX.SPXX_XH, SPXX.SPXX_GG, SPXX.SPXX_CD,
SPXX.SPXX_DW, SPXX.SPXX_FZDW, SPXX.SPXX_DWGX,(jh.jhsl - th.thsl) as '数量'
  FROM (SELECT JHMXB.SPBH as bh, JHMXB.SPQM, SUM(JHMXB.SL) as jhsl
  FROM JHMXB, JHDDB
  WHERE JHMXB.DJBH = JHDDB.DJBH
  GROUP BY JHMXB.SPBH, JHMXB.SPQM) as jh  join SPXX on jh.bh = SPXX.SPXX_SPBH join (SELECT
JHTHMXB.SPBH as bh, JHTHMXB.SPQM, SUM(JHTHMXB.SL) as thsl
  FROM JHTHDB, JHTHMXB
  WHERE JHTHDB.BH = JHTHMXB.BH
  GROUP BY JHTHMXB.SPBH, JHTHMXB.SPQM) as th on th.bh = SPXX.SPXX_SPBH

上面是我一半的SQL语句,如果写完的话,也太长了。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-6 18:02:43 | 显示全部楼层
上面那个SQL测试没错,但数据显示两个相减的表的交集,还要减去另外两张表,再加上22楼显示全部数据,这样子不下去的
回复 支持 反对

使用道具 举报

发表于 2007-6-7 09:03:05 | 显示全部楼层
这个就要在实际应用中具体分析了
其实很简单,你无非就要得到[A与B的交集](中间怎么计算都没关系)在加上[A与B的交集的补集]。两张表是这样,那么三张表,四张表,五张表,甚至更多,都是一样的。
当然了,这是理论上的,具体怎么实现要具体情况具体分析。上面的用一个单一SQL是可以实现,不过要考虑效率问题,你也可以考虑适当的加代码来一起实现。
(对于上面的SQL在两张表之间是可以得到你要的效果的)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-7 09:25:42 | 显示全部楼层
至于效率问题,如果数据多了会不会很慢?
回复 支持 反对

使用道具 举报

发表于 2007-6-7 09:36:30 | 显示全部楼层
这个你可以自己来个用例测试。
怎么样才算数据多(几千还是几万还是几十万?),怎么样才算慢(几秒还是几十秒?),这个要根据实际来判断。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-7 12:02:53 | 显示全部楼层
嗯,好吧,我试一下是否合用
谢谢了,可以结贴了.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-11 10:21 , Processed in 0.036230 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表