SQL developers, I have a badly planned database as task to learn a lot about SQL Server 2012.
SO, there is the 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 |
+-----------+----+---+----------+------------+
After update the row I need to check parent key of element to not allow element to be self-granny or something..
And when I delete the row I need to delete all children and children of children, etc.
Questions are:
How can i select all "parent + grandparent + etc" of one element of DIST?
How can i selects all "sons + grandsons + etc" of one element of DIST?
I read about solutions with CTE, but I have no root of elements and I can't even understand how I can use CTE then.
Please, help!
Thanks.