Retrieve two values from the same column as two columns

This is probably something simple, but I just can’t think of how to do it. I have a table called categories with two columns, Key and Category. I want to select the keys from the table for one value as a Main category, and one as a Sub category. So, I have a query as follows:

SELECT MainCatKey,SubCatKey FROM
(SELECT `Key` AS MainCatKey FROM categories WHERE Category = 'some category name') AS MainCat,
(SELECT `Key` AS SubCatKey FROM categories WHERE Category = 'some other category name') AS SubCat

The problem is that if one of the categories doesn’t exist, then the query returns no rows. What I really want is that if one of the subqueries returns no rows, I still get a result set, but with NULL for the empty result. Using the above example, if ‘some category name’ didn’t exist, but ‘some other category name’ did exist, and had a Key of 123, then I’d want to get a result set of

MainCat | SubCat
NULL    | 123

rather than just an empty result.

SELECT 'maincat' as keytype
     , `Key` 
  FROM categories 
 WHERE Category = 'some category name'
UNION ALL
SELECT 'subcat' as keytype
     , `Key` 
  FROM categories 
 WHERE Category = 'some other category name'

Thanks!