Как правильно написать OQL запрос, для получения менеджера

Всем привет. Есть такой запрос для получения менеджера. Суть:
есть таблица в бд. В ней поля id, manager_id. То есть у каждого id есть свой manager_id. В запросе надо пройти от пользователя до его менеджера, а потом от менеджера к его менеджеру. И если у последнего менеджера id допустим 3, надо заменить его на менеджера с id 222. Проблема в том, чтоб если у нас в конце менеджер с id 3, то обязательно нужно показать менеджера с id 222
SELECT Person AS p
JOIN Person AS p2 ON p2.manager_id=p.id
JOIN Person AS p3 ON p3.manager_id=p2.id
WHERE :this->caller_id = p3.id

Что значит “надо заменить его” и “нужно показать”? В запросе никак нельзя никого заменить. Делая два джойна по manager_id, вы выбираете только те персоны, у которых есть эти два уровня вложенности. То есть в выборку не попадут персоны, у которых нет двух менеджеров сверху.
Попробуйте переформулировать задачу и привести более наглядный пример.