reslinks: id,from_nodename,to_nodename,from_nodeid,to_nodeid
resnodes:id,alias表resnodes的id有时候对应reslinks的from_nodeid,有时候对应reslinks的to_nodeid,
当对应from_nodeid时候,alias里面的内容对应from_nodename,
当对应to_nodeid时候,alias里面的内容对应to_nodename,
但是在reslinks表中的from_nodename,和to_nodename此时的数据确是空的,只有在resnodes保存了记录
就是只有表resnodes中 的alias里面有数据我想做一个视图重现reslinks表中的数据,就是
用alias来代替reslinks表中的from_nodename,to_nodename数据,应该怎么写

解决方案 »

  1.   

    两个办法:
    1。用union,分别把与from和to的两组纪录,抽取出来,union起来。
    2。假如reslinks里面的from和to不同时存在的话,只要用表连接,连接resnodes两次。条件分别是from和to和resnodes的id来连接。
      

  2.   

    我想用一行数据列出来,而不是分成两列
    id,from_nodename,to_nodename,from_nodeid,to_nodeid是一行数据
    而不是
    id,from_nodename,from_nodeid
    id,to_nodename,to_nodeid
    这样
      

  3.   

    嗬嗬,连接的时候,union也好,可以同时选出这行的其他字段呀。没有让你选出下面这个样子的。
    id,from_nodename,from_nodeid
    id,to_nodename,to_nodeid
    容易理解的说法就是,
    1。
    让reslinks和resnodes第一次连接,选出
    reslinks.ID,reslinks.from_nodeid,resnodes.alias,reslinks.to_nodeid,reslinks.to_nodename
    条件是reslinks.from_nodeid 等于resnodes.id
    2.
    让1的结果和resnodes第二次连接,
    这次的条件是 [第一次结果].to_nodeid 等于resnodes.id这样可以理解了吗?
      

  4.   

    你说的我是这样理解的,我是这样写的
    select *  from (
    select RESLINKS.ID ,RESLINKS.FROM_NODEID,RESLINKS.TO_NODEID,RESLINKS.FROM_NODENAME,RESLINKS.TO_NODENAME, 
    RESNODES.ID nodeid,RESNODES.Alias from RESLINKS,RESNODES
    where RESLINKS.From_Nodeid(+)=RESNODES.Id
    union
    select RESLINKS.ID ,RESLINKS.FROM_NODEID,RESLINKS.TO_NODEID,RESLINKS.FROM_NODENAME,RESLINKS.TO_NODENAME, 
    RESNODES.ID nodeid,RESNODES.Alias from RESLINKS,RESNODES
    where RESLINKS.To_Nodeid(+)=RESNODES.Id) 但是这样union是出来两行的
    有关RESLINKS.ID内容的是两行
    1行是reslinks.from_nodeid 等于resnodes.id的记录
    另外1行是reslinks.to_nodeid 等于resnodes.id的记录
    我想让这两行并到1行去怎么写
      

  5.   

    嗬嗬,我写一个框架给你吧。Select T2.ID,T2.from_nodeid,T2.from_nodename,T2.to_nodeid,M2.alias As to_nodename
    From (
      Select T1.ID,T1.from_nodeid,M1.alias As from_nodename,T1.to_nodeid,T1.to_nodename
      From reslinks T1,resnodes M1
      Where T1.from_nodeid(+)=M1.Id
    ) T2,resnodes M2
    Where T2.To_Nodeid(+)=M2.Id