Это должно быть сделано так, как вам нужно.
WITH e
AS (SELECT LPAD (' ', 2 * (LEVEL - 1))
|| estabelecimento.id
|| ' '
|| estabelecimento.nomecompleto
FROM estabelecimento
WHERE estabelecimento.activo = 1
START WITH estabelecimento.id = 36
CONNECT BY PRIOR estabelecimento.id = estabelecimento.estabelecimetnopaiid)
SELECT e.*,
lp.*
FROM e
INNER JOIN ESTABELECIMENTO_LOCAL_PRESCRICAO elp
ON (e.id = elp.estabelecimentoid)
INNER JOIN LOCAL_PRESCRICAO lp
ON (lp.id = elp.localprescricaoid);
Он вернет все строки, выбранные вами в иерархическом запросе, вместе с соответствующими строками из таблицы LOCAL_PRESCRICAO
.
Надеюсь, это поможет ...
EDIT:
Мои извинения, я пропустил соединение идентификатора с другими полями.
Это должно решить проблему.
WITH e
AS (SELECT rownum AS rnum, e_data, id
FROM (SELECT LPAD (' ', 2 * (LEVEL - 1))
|| estabelecimento.id
|| ' '
|| estabelecimento.nomecompleto AS e_data,
estabelecimento.id AS id
FROM estabelecimento
WHERE estabelecimento.activo = 1
START WITH estabelecimento.id = 36
CONNECT BY PRIOR estabelecimento.id = estabelecimento.estabelecimetnopaiid))
SELECT e.e_data,
lp.*
FROM e
INNER JOIN ESTABELECIMENTO_LOCAL_PRESCRICAO elp
ON (e.id = elp.estabelecimentoid)
INNER JOIN LOCAL_PRESCRICAO lp
ON (lp.id = elp.localprescricaoid)
ORDER BY e.rnum;