CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

两表合并问题

楼主qft516(開拓者)2005-08-01 16:59:39 在 Delphi / 数据库相关 提问

现有两个表(A和B),字段相同,资料有一部分不同.我想合并取两个表中的资料(以PS,DT为条件)  
  A表资料:  
      ps     dt     rk     sl     bz  
      11     aa     kk     20     ss  
      22     bb     df     30     hf  
      33     cc     1s     60     s23  
  B表资料:  
      ps     dt     rk     sl     bz  
      11     aa     kk     66     ss  
      22     bb     df     33     hf  
      44     dd     fd     90     hj  
  我想要的结果:  
      ps     dt     rk     sl     bz  
      11     aa     kk              
      22     bb     df              
      33     cc     1s             s23  
      44     dd     fd             hj  
  只要ps,dt相同的就显示一条,不同的都显示,不知怎么实现?  
  用UNION进行合并时,资料有重复.请教各位高手帮忙. 问题点数:50、回复次数:16Top

1 楼hqhhh(枫叶)回复于 2005-08-01 17:42:15 得分 40

1.  
  select   distinct   ps,   dt  
  from  
  (select   *   from   a  
  union    
  select   *   from   b)   x  
   
  2.后面的两个字段sl,   bz取值有什么要求?若不同,是取哪个值呢?Top

2 楼qft516(開拓者)回复于 2005-08-01 18:20:48 得分 0

2.后面的两个字段sl,   bz取值有什么要求?若不同,是取哪个值呢?  
     
  后面的两个字段sl,   bz不用取值。  
  Top

3 楼hqhhh(枫叶)回复于 2005-08-02 08:06:59 得分 0

select   distinct   ps,   dt,''   as   sl,   ''   as   bz  
  from  
  (select   *   from   a  
  union    
  select   *   from   b)   xTop

4 楼qft516(開拓者)回复于 2005-08-02 08:39:38 得分 0

我用的是Access數據庫。上面的代碼好象還是通不過。Top

5 楼luckyboy97(幸运男孩)回复于 2005-08-02 08:57:17 得分 0

select   ps,   dt,   rk,   sl,   bz   from   A   Where   ps   not   in   (select   ps   from   B)  
   
   
  select   '''',   ps,   dt,   rk,   sl,   bz   from   A   Where   ps   not   in   (select   ps   from   B)  
  union   select   '''',Sum(ps),Sum(dt),Sum(rk),Sum(sl),Sum(bz)   from   A   Where   ps   not   in   (select   ps   from   B)  
   
  Top

6 楼xixuemao(钱不是问题,问题是没钱)回复于 2005-08-02 09:09:20 得分 0

晕,好像思路有问题吧。  
  数据本身是两条,你非放到一条里怎么可能?  
  除非数据是有什么关系  
  比如把ps和dt相同的记录中其它字段值相加或者什么关系  
  如果没有怎么可能放在一条显示呢。Top

7 楼qft516(開拓者)回复于 2005-08-02 09:20:34 得分 0

思路是沒有问题的。我只取PS和DT的資料﹐其它的不取數據﹐只要字段就行了。  
  像select   distinct   ps,   dt,''   as   sl,   ''   as   bz   from   a是行的﹐但只是一個表﹐我要的是在兩個表中取資料條數。Top

8 楼qft516(開拓者)回复于 2005-08-05 09:10:10 得分 0

只以PS和DT为条件取資料显示出来就行了﹐重复的只显示一条。其它的字段不取值﹐只要显示字段名称就行了。就如下结果:  
      ps     dt     rk     sl     bz  
      11     aa                  
      22     bb                  
      33     cc                  
      44     dd                
  Top

9 楼hqhhh(枫叶)回复于 2005-08-05 11:00:28 得分 0

你分两步操作:  
   
  1.先生成一个临时表,  
  2.对此临时表进行查询  
  Top

10 楼wtg476(起飞)回复于 2005-08-05 11:03:15 得分 0

1.先生成一个临时表,  
  2.对此临时表进行查询  
   
  Top

11 楼hanlin2004(道德守望者)回复于 2005-08-05 11:20:16 得分 10

select   a.*   from   a,b   where   a.ps   =   b.pa   and   a.dt   =   b.dt  
  union  
  select   a.*   from   a,b   where   not   (a.ps   =   b.pa   and   a.dt   =   b.dt)  
  union  
  select   b.*   from   a,b   where   not   (a.ps   =   b.pa   and   a.dt   =   b.dt)  
   
  楼主测试一下是否可以Top

12 楼hanlin2004(道德守望者)回复于 2005-08-05 11:23:38 得分 0

//////////只以PS和DT为条件取資料显示出来就行了﹐重复的只显示一条。其它的字段不取值﹐只要显示字段名称就行了。就如下结果:  
      ps     dt     rk     sl     bz  
      11     aa                  
      22     bb                  
      33     cc                  
      44     dd  
   
  如果这样的话很好办:  
  select   distinct   *   from  
  (select   ps,pt,''   as   sl,   ''   as   bz   from   a  
    union  
    select   ps,pt,''   as   sl,   ''   as   bz   from   a)   tTop

13 楼hanlin2004(道德守望者)回复于 2005-08-05 11:25:22 得分 0

sorry  
   
  如果这样的话很好办:  
  select   distinct   *   from  
  (select   ps,pt,''   as   rk,''   as   sl,   ''   as   bz   from   a  
    union  
    select   ps,pt,''   as   rk,''   as   sl,   ''   as   bz   from   b)   t  
  Top

14 楼qft516(開拓者)回复于 2005-08-08 14:35:32 得分 0

不好意思﹐這几天出差去了﹐沒有看帖。  
   
  to:hanlin2004(乘千里风破万里浪)    
  你的意思跟hqhhh(枫叶)開始說的一樣。  
   
  to:hqhhh(枫叶)    
      現在看來只有按你所說的分兩步了。其它不知道還有什么更好的辦法﹖Top

15 楼qft516(開拓者)回复于 2005-08-08 14:35:48 得分 0

不好意思﹐這几天出差去了﹐沒有看帖。  
   
  to:hanlin2004(乘千里风破万里浪)    
      你的意思跟hqhhh(枫叶)開始說的一樣。  
   
  to:hqhhh(枫叶)    
      現在看來只有按你所說的分兩步了。其它不知道還有什么更好的辦法﹖Top

16 楼qft516(開拓者)回复于 2005-08-09 13:20:27 得分 0

謝謝大家參與Top

相关问题

  • 将两表合并
  • 如何合并两个表
  • 怎样合并两个表???
  • 怎样合并两个表????
  • 怎样合并两个表???????
  • 如何合并两个表
  • 两张表合并问题,
  • 两表表合并的问题
  • 如何将FOXPRO中的两表合并
  • 如何在列上合并两个表?

关键词

  • ps
  • 字段
  • 资料
  • sl
  • bz
  • rk
  • dt
  • 取值
  • 表
  • hqhhh

得分解答快速导航

  • 帖主:qft516
  • hqhhh
  • hanlin2004

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo