A primeira coisa que eu tentaria é uma subconsulta:
from ((select q.* from quanda q where q.id = :id1) union
(select q.* from quanda q where q.related = :id2)
) left join
. . .
Nota:Isso realmente quer índices em
quanda(id)
e quanda(related)
para desempenho. Se poucas linhas forem selecionadas, isso poderá ser muito mais rápido.