设备类型表(T_DeviceType)
id   deviceName  mount 1   "router"     "0"
 2   "squid"      "1"
 3   "scnode"     "1,2"其中的deviceName的值,就确定了有哪几种设备表,
从上面的值可以看出有router表,squid表,scnode表router表
id   name
1    router1
2    router2squid表
id  name
1   squid1
2   squid2scnode表
id   name 
1    scnode1
2    scnode2
设备关系表 (T_DeviceRel)
id  pid   deviceId   deviceTypeId
1     0      1            1
2     0      2            1
3     0      3            17     2      22           2
8     3      23           2
9     3      30           213    3       6           315    3       2           3
16    1       3           3
17    7       4           3在T_DeviceRel表中deviceTypeId这个字段是T_DeviceType的外键
deviceId都来自router表,squid表,scnode表这几张表的IddeviceId和T_DeviceType联合起来就可确定是哪一个具体的设备
前提是在iBatis中的配置文件中写:
现在我要查询T_DeviceRel这张表,把与T_DeviceType, router表 或 squid表 或 scnode表相关的信息查询
出来,但我不知道怎么在iBatis里面写查询语句?
     请高手们指点!!!!!!!!!!!!!

解决方案 »

  1.   

    T_DeviceType表中的字段id  pid  deviceId  deviceTypeId 还有一个字段是router表或squid表或scnode表 这其中一张表的name,因为在查询时还不能确定到底差哪张表的name,要经过判断。但我就是不知道怎么去判断?
      

  2.   

    你是要确定连接哪个表吧?
    你将
    router表 
    id  name 
    1    router1 
    2    router2 squid表 
    id  name 
    1  squid1 
    2  squid2 scnode表 
    id  name 
    1    scnode1 
    2    scnode2三张表合并为一个表,从ID上区分,否则你要用三张表的连接 了
      

  3.   

    看了3分钟,没看出你的表关系。建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  4.   

    呵呵,我也是琢磨了半天,估计是楼主要根据deviceTypeId中的值来确定连接哪个表
      

  5.   

    楼主可以使用这种方法。把多少表UNION起来然后和其它表进行JOINselect 
    from T_DeviceType a inner join (
    select id,name,'router' as deviceName from router
    union all
    select id,name,'squid' as deviceName from squid
    union all
    select id,name,'scnode' as deviceName from scnode
    ) b on a.deviceName=b.deviceName
    但不清楚你的具体需要,所以没办法写出你需要的SQL语句。
      

  6.   

      很感谢各位高手的指点,第一次发帖,太激动,所以描述的不是很清楚。对于上面
      建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 
      参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 
      
      1. 你的 create table xxx .. 语句 
      2. 你的 insert into xxx ... 语句 
      3. 结果是什么样,(并给以简单的算法描述) 
      4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 给的建议,我在听取哦!