我有9个数据表,每个表有3个相同的字段,其他字段不同,但对于那3个相同的字段,每个表里的值都不一样,现在需要根据相同字段中其中的一个字段的一个值做条件来查询,并且查询结果显示的字段可以定制。例如有表1-表9,都含有“名称”、“类型”、“编号”3个字段,表1-表9还分别含有其他各自不同的字段,现在要根据一个“名称”值来查询对应的一条记录,该名称值只会出现在表1-表9中的一个中,查询得到的结果可以定制字段,即显示你选择要显示的字段值,请教有何好的思路?最好有简单提示性代码,欢迎前来挑战难题,多谢啦!!!

解决方案 »

  1.   

    用联合unionselect “名称”、“类型”、“编号”
    from table1unionselect “名称”、“类型”、“编号”
    from table2union... ...
      

  2.   

    先建立一个视图,然后,从视图中根据条件去查询.
    视图你就采用楼上的方法
    create view as 
    select 
    union
    ..
      

  3.   

    这么多表?我只想到用联合union 
      

  4.   

    你可以根据名称,找类型,再找相关的要显示的字段
    因为9个表中前三个字段都相同,你可以就只这三个字段的视图.
    create view t9
    as
    select name,'t1' tablename from t1
    union
    select name,'t2' tablename from t2
    ......
    select name,'t9' tablename from t9这样你可以根据你的名称知道应该从哪个表中查询了.
    把这个表名赋给查询显示的语句是不是可以呢.试试,我没有试
      

  5.   

    to wzn0521:
    ------------------------------------------------------------------------------------------------------------------------------
    “是有这么多表,因为构建数据库的时候是按“类型”来建表的,每种类型有其自身的参数字段” 如果是这样,你肯定有个表保存了“类型”吧,那么这个保存了类型的表中不会没有这样一个字段吧,这个字段对应这个类型所建立的表的表名。 一定要有这个字段,否则根本无法实现你所说的智能的功能。 那么有了这个字段,你就可以通过查询保存“类型”的这个表,依次根据这个表中保存所建立表名的字段,通过字符串的组合,就可以查找到你想要找的名称所在的表了,不是吗? 我应该没理解错你的意思吧?
    ------------------------------------------------------------------------------------------------------------------------------
    明白你的意思,但首先只有名称这唯一字段值,你怎么知道它属于哪一类,然后去查“类型”表呢?
      

  6.   

    同意。楼主的表设计得不合理。
    应该再增加一个表,里边有“名称”,“类型”两个字段。先查询这个表确定类型,再查询该类型的表。表1-表9的“类型”多余,因为里边的值都相同。BTW,用字符串做主键不好,应该增加一个整型的ID字段做主键。