在我的Oracle服务器上有很多表A,B,C,D,E,F……,我要做的是从这些表中查询符合一定条件的数据,并将它们作函数处理,然后在指定的DBGrid列X,Y,Z等中显示出来。X中显示A,B的综合信息,Y中显示C,D的综合信息,Z中显示E,F的综合信息……。由于涉及的表太多,用一个Query操作起来比较困难,写的SQL语句也太复杂。能不能用多个Query分别作查询,比如Query1查询A,B,并将结果放到Table1中;Query2查询C,D,并将结果放到Table2中;Query3查询E,F,并将结果放到Table3中……,最后再用一个总的Query将我需要的字段从Table1,Table2,Table3……中查询出来,最后在DBGrid上作显示呢?

解决方案 »

  1.   

    with DM.QryStr do begin
      Close;
      SQL.Clear;
      if 条件1 then 
        SQL.Insert('select * from a,b')
      else if 条件2 then 
        SQL.Insert('select * from c,d')
      ...
      Prepare ;
      Open;
      ...
    end;同一個Query、切換内容。
      

  2.   

    我认为楼主的做法是不可取的,因为xyz三列是相关联的,也就是说,ab通过一定的关联取得了一笔记录,而cd的数据应该于ab取出的数据有某种联系,而楼主的做法将使xyz之间的关联变得困难并容易出现错误。
    而这种查询,楼主不妨考虑一下综合检索如 select x,y,z from a,b,c,d... where 条件
    也可以用其他的连接方式做。
      

  3.   

    lywho(阿勇)兄:怎麼又是君、今日可是君”貼”在俺的身後...(Θ_Θ)楼主的表A,B,C,D,E,F...一堆、俺還以為是分別表示尼。
    既然是関联、那就先建関联、後表示。可也没説明関联条件呀...
      

  4.   

    谢谢以上各位,我的表A,B,C,D,E,F……都是有关键字的,假设为key,这个key可以把这些表都联系起来。只是因为我在这些表中取的不同字段的数据要做不同的数据处理,最后要得到分类信息,如:表A的一个字段与表B的一个字段作相乘,作为一个信息;表C的一个字段与表D的一个字段作相加,作为一个信息;表E的一个字段与表F的一个字段作相除,作为一个信息……,比较复杂。如果用select x,y,z from a,b,c,d... where 条件做的话将要写很长的sql语句,恐怕出错,所以我才想先做分类查询处理,然后再作综合查询。难道这样的做法真的不可行么?或者朋友们还有什么好的解决办法?
      

  5.   

    若是Oracle、可做一個臨時表、再用PL/SQL語言写一個処理Procedure,
    把処理結果放入臨時表、最後用TDBGrid表示。
      

  6.   

    分开表示也不是不可以,但他应该是这样
    1、将a、b的数据取出放入x
    2、将c、d的数据取出放入y
    3、将c、d的数据取出放入y
    4、循环x,取出key值,检索y,z,取出y、z与x相关联的字段,放入dbgrid。在检索yz时还要考虑如果yz中没有与x相关联的字段改怎样处理。to: ailibuli(愛理不理) 
    人有失脚,马有失蹄,智者千虑必有一失。当然,愚者千虑嘿嘿嘿哈哈哈