I only know older versions of Firebird (still on 2.5), but there I always make sure to put inner joins before left joins if possible, i.e. I normally write select * from PRODUCTS p join SALES s left join PRODUCTCATEGORY pc and avoid writing select * from PRODUCTS p left join PRODUCTCATEGORY pc join SALES s, since the optimizer doesn't work equally well with joins after the first outer join (there are a few exceptions).
Though to only answer your original question, yes, it is possible to have subselects as long as they produce single results, select *, (select pc.NAME from PRODUCTCATEGORY pc where p.ID =pc.CATEGORY_ID) as CATEGORY_NAME from PRODUCTS p
Hth,