-2

ここにテーブル構造とサンプルデータがあります

テーブル データリンク インターフェイス

nodeid | ifindex | nodeparentid | parentifindex
100000 | 3 | 100004 | 11
100001 | 3 | 100007 | 100
100002 | 5 | 100009 | 66

テーブル ノード

nodeid | nodesysname
100000 | ant
100001 |bird
100002 | cat
100004 | dog
100007 | egg
100009 | fish

テーブル snmpinterface

nodeid |  snmpifiname | snmpphysaddr | snmpifdescr | snmpifindex
100000 | 1/1/1 | 00:AA | AAA | 3
100001 | 1/1/2 | 00:BB | BBB | 3
100002 | 1/1/3 | 00:CC | CCC | 5
100004 | 2/1/1 | 00:DD | DDD | 11
100007 | 2/1/2 | 00:EE | EEE | 100
100009 | 2/1/3 | 00:FF | FFF | 66

テーブル ipinterface

nodeid | ipaddr
100000 | 192.168.0.1 |3
100001 | 192.168.0.2 | 3
100002 | 192.168.0.3 |5
100004 | 192.168.0.4 |11
100007 | 192.168.0.5 |100
100009 | 192.168.0.6 |66

私が手に入れたいのは

nodeid | ifindex | nodeparentid | parentifindex     
to 

|srcnodesysname |srcsnmpifname | srcsnmpphyaddr | srcipaddr| srcsnmpifdescr |destnodesysname |destsnmpifname | destsnmpphyaddr | destipaddr| destsnmpifdescr |

(Ex.)
100000 | 3 | 100004 | 11    
to
ant | 1/1/1 | 00:AA | 192.168.0.1 | AAA | dog | 2/1/1 | 00:DD | 192.168.0.4 | DDD

このような結果を得るためにクエリにSQLステートメントを書くにはどうすればよいですか。

4

1 に答える 1

1

ノードから結果を返し、同じクエリに親ノードを含めることを意味していたと思いますか? その場合は、次を使用してJOINください。

SELECT n.nodesysname, s.snmpifiname, s.snmpphysaddr, i.ipaddr, s.snmpifdescr ,
   n2.nodesysname parentnodesysname, s2.snmpifiname parentsnmpifiname, s2.snmpphysaddr parentsnmpphysaddr, i2.ipaddr parentpaddr, s2.snmpifdescr parentsnmpifdescr
FROM Node n
  JOIN datalinkinterface d ON n.nodeid = d.nodeid
  JOIN snmpinterface s ON n.nodeid = s.nodeid
  JOIN ipinterface i ON n.nodeid = i.nodeid
  LEFT JOIN node n2 ON d.nodeparentid = n2.nodeid
  LEFT JOIN snmpinterface s ON n2.nodeid = s2.nodeid
  LEFT JOIN ipinterface i ON n2.nodeid = i2.nodeid

LEFT JOIN親が存在しない場合に備えて、親の結果を取得していました。

幸運を。

于 2013-02-05T13:56:19.510 に答える