I have a query like:
select 
    qsn.code, 
    (select prs.display_name from prs where prs.id = qsn.fk_prs) display_name,
    (select prs.address from prs where prs.id = qsn.fk_prs) address,
    (select prs.tel from prs where prs.id = qsn.fk_prs) tel
from 
    qsn
where 
    qsn.register_date between :x1 and :x2
When I look at the execution plan of the query, it queries prs table 3 times (each time using INDEX UNIQUE SCAN). 
I wonder if I can query the prs table once using WITH clause? How can I write the query that way.
I shall mention that because each of the tables have millions of record, joining them makes the query so slow.
 
     
     
    