Jan Steinman: have a look at nested sets – http://en.wikipedia.org/wiki/Nested_set_model

By numbering the left & right of every node in the hierarchy, to get the descendants of any node is a simple case of using BETWEEN left AND right.