Saya pikir, hal seperti itu seharusnya berhasil:
SELECT * FROM
(SELECT n.id, n.val, CONNECT_BY_ISLEAF isleaf FROM NODES n
LEFT JOIN RELATION r ON n.id = r.id_child
CONNECT BY PRIOR n.id = r.id_father
START WITH r.id_father IS NULL)
WHERE isleaf = 1
Oh, dan omong-omong, Anda bisa mendapatkan semua daun bahkan tanpa menggunakan kueri hierarkis. Cukup pilih semua simpul, yang bukan simpul ayah untuk simpul mana pun dari tabel relasi. Sesuatu seperti itu:
SELECT n.* FROM NODES n
WHERE NOT EXISTS (SELECT ID_FATHER FROM RELATION r
WHERE r.id_father = n.id)
Untuk mendapatkan simpul daun dari simpul yang ditentukan, cukup ubah kondisi di klausa MULAI DENGAN, untuk memulai pembalikan pohon dari simpul yang Anda minati. Misalnya, kueri ini akan mengembalikan Anda semua anak daun simpul dengan id =5 :
SELECT * FROM
(SELECT n.id, n.val, CONNECT_BY_ISLEAF isleaf FROM NODES n
LEFT JOIN RELATION r ON n.id = r.id_child
CONNECT BY PRIOR n.id = r.id_father
START WITH n.id = 5)
WHERE isleaf = 1