Korzystając ze swojego przykładu, możesz wypracować podzbiór imion rodziców u dzieci, jeśli imiona rodziców będą zawarte w imionach osób na utrzymaniu. Jeśli tak, rozważ zapytanie składające:
# GREAT-GRANDPARNTS
SELECT DISTINCT Null As Parent, Parent As Dependent
FROM Ancestry
WHERE Len(Parent) = 1
UNION
# GRANDPARNTS
SELECT DISTINCT Left(Parent, 1) As Parent, Parent As Dependent
FROM Ancestry
WHERE Len(Parent) = 3
UNION
# PARENTS
SELECT DISTINCT Left(Child, 1) As Parent, Child As Dependent
FROM Ancestry
WHERE Len(Child) > 3
UNION
# CHILDREN
SELECT DISTINCT Left(Child, 3) As Parent, Child As Dependent
FROM Ancestry
WHERE Len(Child) > 3;
Oczywiście dostosuj Len()
, Left()
lub Mid()
funkcje ciągów i rozszerzenia (tj. wnuki) zgodnie z rzeczywistym wzorcem nazw przodków. To rozwiązanie nie zadziała, jeśli nie ma odniesienia do rodziców w podrzędnych wartościach ciągu.