2010-03-17 3 views
1

Supposons que j'ai deux colonnes dans une table qui représente un graphique, la première colonne est un FROMNODE et la deuxième est TONODE. Ce que je voudrais savoir, c'est comment allons-nous trouver tous les nœuds qui sont à deux pas d'un nœud particulier. Supposons que j'ai un noeud numéroté '1' et que j'aimerais connaître tous les noeuds qui sont à deux pas de celui-ci.Requête pour trouver tous les nœuds à deux pas d'un nœud particulier

J'ai essayé (je suppose le nom de table graphique)

SELECT FROMNODE FROM GRAPH WHERE TONODE=1 

est de sélectionner tous les noeuds connectés au noeud 1, mais je ne pouvais pas comprendre comment pourrais-je trouver tous les les nœuds qui sont à deux pas du nœud 1?

Répondre

0

Prenez-le une étape à la fois!

select step2.tonode 
from graph step1 
join graph step2 on step2.fromnode = step1.tonode 
where step1.fromnode = 1 
+0

Merci pour la réponse ..... mais, cela donne 1 comme l'un des noeuds de sortie, ce qui ne pouvait pas être possible, comme nous partons du noeud 1 et regardons tous les autres noeuds qui sont connectés au noeud 1 et sont à deux pas du noeud 1. Disons si 2 et 3 sont connectés au noeud 1 et 4,5 sont connectés au noeud 2 ....... 8,9 sont connectés au noeud 3 ..... alors nous devons trouver 4,5,8,9 car ils sont à deux pas du noeud 1. – iecut

+0

désolé pour la confusion ... ... vous l'avez bien fait !!! Merci encore. – iecut

0

Joignez à nouveau sur la même table ...

SELECT g2.FromNode 
FROM Graph as g1 
JOIN Graph as g2 ON g2.ToNode = g1.FromNode 
WHERE g1.ToNode = @startnode 
; 
Questions connexes