Código
select p.produto
, p.descricao
, coalesce(p5.produto, p4.produto, p3.produto, p2.produto, p1.produto) as componente
, coalesce(p5.descricao, p4.descricao, p3.descricao, p2.descricao, p1.descricao) as descricao_componente
, coalesce(c5.quantidade, 1) * coalesce(c4.quantidade, 1) * coalesce(c3.quantidade, 1) * coalesce(c2.quantidade, 1) * coalesce(c1.quantidade, 0) as quantidade
, case when c5.id is not null then 5
when c4.id is not null then 4
when c3.id is not null then 3
when c2.id is not null then 2
when c1.id is not null then 1
else 0 end as nivel
from produtos p
left join fichas_tecnicas f1 on f1.id = p.ficha_tecnica_principal_id
left join componentes_produtos c1 on c1.ficha_tecnica_id = f1.id
left join produtos p1 on p1.id = c1.componente_produto_id
left join fichas_tecnicas f2 on f2.id = p1.ficha_tecnica_principal_id
left join componentes_produtos c2 on c2.ficha_tecnica_id = f2.id
left join produtos p2 on p2.id = c2.componente_produto_id
left join fichas_tecnicas f3 on f3.id = p2.ficha_tecnica_principal_id
left join componentes_produtos c3 on c3.ficha_tecnica_id = f3.id
left join produtos p3 on p3.id = c3.componente_produto_id
left join fichas_tecnicas f4 on f4.id = p3.ficha_tecnica_principal_id
left join componentes_produtos c4 on c4.ficha_tecnica_id = f4.id
left join produtos p4 on p4.id = c4.componente_produto_id
left join fichas_tecnicas f5 on f5.id = p4.ficha_tecnica_principal_id
left join componentes_produtos c5 on c5.ficha_tecnica_id = f5.id
left join produtos p5 on p5.id = c5.componente_produto_id