2010-07-29 6 views
1

j'ai deux tables, qui contient des noeuds et seconde qui contient les relations entre eux comme ceci:Interrogation d'une représentation de base de données d'un arbre (MySQL)

Tableau A (Node nommé)

NodeID | NodeName 
100 | Name 1 
101 | Name 2 
102 | Name 3 

tableau B (appelée relation)

NodeParent | NodeChild 
    100  | 101 
    101  | 102 

Je dois d'exécuter une requête qui a besoin de trouver quels noeuds sont orphelins (ils ne sont pas dans le tableau des relations). Comment puis-je effectuer une recherche dans NodeParent et NodeChild en même temps?

Répondre

2
SELECT 
    n.NodeID 
FROM 
    Node AS n 
LEFT JOIN 
    Relationship AS r 
ON 
    n.NodeID = r.NodeChild 
WHERE 
    r.NodeChild IS NULL 
1

Cela vous donnera tous les nœuds qui n'ont pas d'enfants dans la table de relation.

select n.* 
from Node n 
left join Relationship r on r.NodeChild = n.NodeID 
where r.NodeChild is null; 
Questions connexes