To the problem: firstly I thought about creating two subqueries joining tables (A, B) and (A, C) and then get the final resultset using UNION ALL, something like
SELECT a.rollno ,b.name AS boy1, NULL AS boy2
FROM cmpt a, mbt b
SELECT a.rollno, NULL AS boy1, c.name AS boy2
FROM cmpt a, cbt c
But, this approach may return extra rows when there is no corresponding ROLLNO in one of (B, C) tables. You may add checks on existence of the ROLLNO in the opposite table (EXISTS), but this would not be very performant.