Sélectionnez tous les parents ou enfants dans la même relation de table SQL Server

SQL développeurs, j'ai un mal programmé de la base de données de la tâche à apprendre beaucoup de choses sur SQL Server 2012.

DONC, il y a la table Elem:

+-----------+----+---+----------+------------+
|VERSION(PK)|NAME|KEY|PARENT_KEY|DIST_KEY(FK)|
+-----------+----+---+----------+------------+
|1          |a   |12 |NULL      |1           |
+-----------+----+---+----------+------------+
|2          |b   |13 |12        |1           |
+-----------+----+---+----------+------------+
|3          |c   |14 |13        |1           |
+-----------+----+---+----------+------------+
|4          |d   |15 |12        |1           |
+-----------+----+---+----------+------------+
|5          |e   |16 |NULL      |1           |
+-----------+----+---+----------+------------+
|6          |e   |17 |NULL      |2           |
+-----------+----+---+----------+------------+

Après la mise à jour de la ligne j'ai besoin de vérifier la clé de parent de l'élément à ne pas permettre à l'élément d'être soi-grand-mère ou quelque chose..

Et quand je supprime la ligne j'ai besoin de supprimer tous les enfants et les enfants des enfants, etc.

Questions sont les suivantes:

  1. Comment puis-je sélectionner tout "parent + un grand-parent + etc" d'un élément de DIST?
  2. Comment puis-je sélectionne tous les "fils + les petits-fils de + etc" d'un élément de DIST?

J'ai lu sur des solutions avec CTE, mais je n'ai aucune racine d'éléments et je ne peux même pas comprendre comment je peux l'utiliser CTE ensuite.

S'il vous plaît, à l'aide!

Grâce.

source d'informationauteur Khronos