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... 怎么办呢? 谢谢!
select name as ID1,name as ID2,... from table1 t1 不会是这样的吧。还是把几个样本数据和想要的结果列出来。
先将你查出的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
要么这样: 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你说这样效率会不会好一点?关于效率,到底怎么来测试?
你的意思是不是 table1 id name 001 aa 002 bb 003 cctable2 id1 id2 id3 aa bb cc 然后你要实现 table3 name1 name2 name3 aa bb cc
结点表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...
怎么办呢?
谢谢!
from table1 t1
不会是这样的吧。还是把几个样本数据和想要的结果列出来。
SELECT DISTINCT TABEL1.*;
FROM TABEL1 LEFT OUTER JOIN TEMP_ID ;
ON TABEL1.id = TEMP_ID.id;
ORDER BY TABEL1.id
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的外键)
我知道这两个表结构不大好,但现在没办法,就要这样,有没有办法呢?
谢谢!
這樣就比較麻煩哩。下面的代碼未經過測試: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....效率奇低。
我select出来好像只能是table2一样的结果,其实可能还不止6个ID。
至于最终返回的倒不一定是table3一样,只要能把它反出来就行,我想用
table4:num,name也可以的,只是要把table2换成table4好像也很麻烦。
飘香大虾你说呢?
不过这样多加了项会不会对速度影响很大呢?
其实我是select了好几把,再join了几把才得到table2的,
table1是指结点;我现在就是要找出结点A到结点B的最短路径,
table2就是查出来的路径,
我要求总距离小,所有好像一定要连成table2的样子才能得到总距离。
有其它好办法吗?
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你说这样效率会不会好一点?关于效率,到底怎么来测试?
table1
id name
001 aa
002 bb
003 cctable2
id1 id2 id3
aa bb cc
然后你要实现
table3
name1 name2 name3
aa bb cc
table2是
001 002 003
aa bb cc
对吗
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 ,这样处理着很方便!
对啊,有什么好办法吗?