列出Sample data來就好了,這樣理解好像有點困難?

解决方案 »

  1.   

    Ok,
    结点表table1:ID,name(假设就这两列吧)
    然后我select t1.ID as ID1, t2.ID as ID2,...
         from table1 t1, table1 t2,...
         where ....
    这样就得到了一个记录集,ID1,ID2,...ID6 
    这些IDx都是与table1的ID相关的,但我现在要返回的是name1,name2...
    怎么办呢?
    谢谢!
      

  2.   

    select name as ID1,name as ID2,...
         from table1 t1
    不会是这样的吧。还是把几个样本数据和想要的结果列出来。
      

  3.   

    先将你查出的ID记录集生成一个游标库CURSOR TEMP_ID(按ID建索引),然后与TABLE1(也按ID索引)用下面SQL语句查询:
    SELECT DISTINCT TABEL1.*;
     FROM  TABEL1 LEFT OUTER JOIN TEMP_ID ;
       ON  TABEL1.id = TEMP_ID.id;
     ORDER BY TABEL1.id
      

  4.   

    还没说明白啊???
    OK,OK, 
    table1: ID, name,
    table2: ID1,ID2,ID3,ID4,ID5,ID6 (这6个ID均为table1中的ID的外键)
    我现在要根据table2得到table3,
    table3:name1,name2,name3,name4,name5,name6(这6个name均为table1中的name的外键)
    我知道这两个表结构不大好,但现在没办法,就要这样,有没有办法呢?
    谢谢!
      

  5.   

    KAO...
    這樣就比較麻煩哩。下面的代碼未經過測試:Select a1.name,a2.name,a3.name,a4.name,a5.name
    From table1 a1 INNER JOIN table2 ON a1.ID=table2.ID1
    INNER JOIN table1 a2 ON table2.ID2=a2.ID
    INNER JOIN table1 a3 ON table2.ID3=a3.ID
    INNER JOIN table1 a4 ON table2.ID4=a4.ID
    INNER JOIN table1 a5 ON table2.ID5=a5.ID....效率奇低。
      

  6.   

    呵呵,是啊,我的意思就是说效率太低。
    我select出来好像只能是table2一样的结果,其实可能还不止6个ID。
    至于最终返回的倒不一定是table3一样,只要能把它反出来就行,我想用
    table4:num,name也可以的,只是要把table2换成table4好像也很麻烦。
    飘香大虾你说呢?
      

  7.   

    那要不然,第一次select時就把name一塊帶出來算了,省得這樣搞過來搞過去的。
      

  8.   

    呵呵,有道理啊!
    不过这样多加了项会不会对速度影响很大呢?
    其实我是select了好几把,再join了几把才得到table2的,
    table1是指结点;我现在就是要找出结点A到结点B的最短路径,
    table2就是查出来的路径,
    我要求总距离小,所有好像一定要连成table2的样子才能得到总距离。
    有其它好办法吗?
      

  9.   

    要么这样:
    table2: bh,ID1,ID2,ID3,ID4,ID5,ID6
    table3:num,ID
    insert inot table3
       select bh,num=1, id1 as ID from table2insert into table3
       select bh,num=2, id2 as ID from table2
    ....
    然后再
    select a.hb,a.num,b.name 
    from table3 a, table1 b
    where a.id=b.id你说这样效率会不会好一点?关于效率,到底怎么来测试?
      

  10.   

    你的意思是不是
    table1
    id    name
    001   aa
    002   bb
    003   cctable2
    id1 id2  id3 
    aa  bb   cc
    然后你要实现
    table3
    name1  name2  name3
    aa     bb     cc
      

  11.   

    哦,不对,
    table2是
    001  002  003 
    aa   bb   cc
    对吗
      

  12.   

    实现这种树结构节点的存储听说在ORACLE里有一个专门的表结构,可以方便的存取!但我在SQLSERVER里实现的时候是这样实现的
    Table 
    NodeId  NodeName        UpNodeId
    1          节点一(1)      0
    2          节点二(1)      0
    3          节点三 (1)     0   
    4          节点四 (2)     3   
    5          节点三 (2)     2   
    6          节点三 (2)     1 
    读取的时候在TTreeNode.StateIndex  里保存NodeId ,这样处理着很方便!
      

  13.   

    To:liujianjun_(流星尔) 
    对啊,有什么好办法吗?