我有两个表名为节点和链接,如下所示:
--Links:
-----------------------------------
id fromx fromy tox toy
-----------------------------------
a1 x1 y1 x2 y2
a2 x2 y2 x3 y3
a3 x2 y2 x4 y4
a4 x1 y1 x4 y4
a5 x1 y1 x5 y5
--Nodes:
id x y
--------------
1 x1 y1
2 x2 y2
3 x3 y3
4 x4 y4
5 x5 y5
我想通过将Links表中的fromx,fromy和tox,toy与Nodes表中的x和y相匹配来生成第三个表,以生成如下所示的表:
linkid fromid toid
--------------------
a1 1 2
a2 2 3
a3 2 4
a4 1 4
a5 1 5
为了获得该结果,我使用以下查询在节点表上使用此查询连接两次,但是我没有得到任何结果。
select links.id as linkid,
n1.id as nodeid, fromx, fromy, tox from links
inner join nodes n1
inner join nodes n2
on
links.fromx = n1.x
and links.fromy = n1.y
and links.tox = n2.x
and links.toy = n2.y
如果能有所帮助,我很乐意创建临时表等。
select
l.id as link_id,
frm.id as from_id,
t.id as to_id
from
links l
inner join
nodes frm
on frm.x = l.fromx
and frm.y = l.fromy
inner join
nodes t
on t.x = l.tox
and t.y = l.toy