Самое банальное что пришло на ум:
Код:
procedure a (глубина, кто_продал_имя, кто_продал_указ);
кто_продал_указ - указание на вершину графа(ссылка, номер вершины и.т.п)
begin
if глубина = треб_глубина then exit;
q = "SELECT кому_продал FROM table WHERE Кто_продал = кто_продал_имя;
ar = выполнить(q) и получить массив;
связать вершину кто_продал с вершинами кому_продал
(при необходимости добавить вершины кому_продал в граф);
for i:=1 to размер(ar) do
a(глубина+1; ar[i]; указание на вершину графа с именем ar[i])
end;