我通过adoquery1、adoquery2分别查询t1、t2两张表,
select * from t1
select * from t2
表t1和t2的完全相同
如何能将查询结果合并起来同时显示在一个dbgrid框里面?

解决方案 »

  1.   

    select * from t1,t2
      

  2.   

    如果在同一个adoquery里面写
    select * from t1 union select * from t2
    虽然可以合并查询结果,但是无法多线程同时查询了
    求可实现多线程查询同时合并查询结果集的方法
      

  3.   

    过客那样的话不是成笛卡儿积了...应该是
    select * from t1
    union
    select * from t2
      

  4.   

    老大们看清楚了再回阿,union的方法我知道,但是那样就无法用多个query同时查询了吧
    因为数据量比较大
    select * from t1
    union
    select * from t2
    union
    select * from t3
    .....
    这样下去查询速度会很慢的阿
      

  5.   

    DBGrid只能链接一个数据集,所以只能在一个QUERY中写语句。
      

  6.   

    "老大们看清楚了再回阿........"为什么要说“们”?我回复时没看到你三楼的帖子,只看到二楼的过客了,相差1分钟而已嘛...不扯淡了,谈问题...我觉得用union还不错,不union你自己做的话会更慢的,你用query1查t1,query2查t2...回头你不得攒一起去啊?有重复记录你也不能都显示吧?我觉得你不会作得比union快的...
      

  7.   

    我想最简单的办法是用union,速度问题你可以测试下是否能接受select * from table2 union all  select * from table3
      

  8.   

    对阿,就是这个问题怎么才能解决?我现在就是想用多个adoquery同时查询多张结构相同的表,并把结果拼合到一起
      

  9.   

    1多w条大概要3秒,用的是access数据库,那么10w条要半分钟?绝对不可接受
      

  10.   

    你可以编程实现将:
    各个query的插到一个与dbgrid连接的query中,当然,每插一个的同时你都得判断一下与已有的是否重复...
    这样比union应该是慢很多了,不信可以一试...
      

  11.   

    1多w条大概要3秒,用的是access数据库,那么10w条要半分钟?绝对不可接受不过还是感谢各位老大给的建议,再问一句,我的程序在查询同时在播放背景音乐用的是mediaplayer控件,是否会因为查询时间长,占用系统资源大,或者是单线程的原因,使音乐播放出现问题?比如停顿,走调什么的?
      

  12.   

    决定用union了,等音乐的问题解决了就揭帖
      

  13.   

    用access,多表间记录union,总共10万条记录...30秒都不能接受???(要是放光盘里更恐怖了)服了...偶以前做的一个项目,db也是access,有一个表9万多条记录,那个窗体光打开就得十秒左右的说...
      

  14.   

    你可以将音乐做成一个单独的线程,这样即使查询是单线程的,cpu也会分配时间片给mediaplayer
      

  15.   

    yesxwl() :你可以将音乐做成一个单独的线程,这样即使查询是单线程的,cpu也会分配时间片给mediaplayer可以给一段代码的例子吗?
      

  16.   

    呵呵 ,谢谢 如果 方便,我也想要 一份楼主,你的 问题 可以这么结局;
    首先假设
    表a:字段 :id,name,^
    表b: 字段: id,name,^
    select a.id,a.name,b.id,b.name from a,b where ^^^^^
      

  17.   

    另外各位高手:我向问个 问题 :
    1.我现在想从来张表中取数据,但是在dbgrid中重新定义了tcolumn 的title,color等
    这样在程序运行期间我就必须重新指定:dbgrid 中各列 fieldname 属性可是我 指定了,编译通过,可是运行的时候错误,没有任何数据显示,请问 各位:我应该怎么来指定fieldname 呢?
    谢谢
      

  18.   

    ==============unit2:线程thread1;====================
    unit Unit2;
    interface
    uses
      Classes {$IFDEF MSWINDOWS} ,mplayer, Windows {$ENDIF};implementation
     uses unit1;procedure thread1.Execute;
    var
    m:TmediaPlayer;
    begin
      SetName;
      Unit1.Form1.MediaPlayer1.Open;
      unit1.Form1.MediaPlayer1.Play;
      { Place thread code here }
    end;end.
    ==========Unit1:mainform=============Form1中放一mediaplayer;
    FileName:=C:\WINDOWS\MEDIA\The Microsoft Sound.wav
    deviceType:=dtAutoSelectuses unit2;
    procedure TForm1.Button5Click(Sender: TObject);
    var
    m:Thread1;
    begin
     m:=Thread1.Create(false);
    end;
      

  19.   

    select * from t1
    union
    select * from t2
      

  20.   

    select * from t1 union select * from t2
    用一个query就可以了
      

  21.   

    hoho看来该揭帖了,谢谢大家了