Вы можете сделать это так, как вы заявили. В этом нет ничего плохого. Я бы не обязательно заменял NULL пустыми строками. Есть ли причина, по которой вы это делаете?
То, что вы должны знать при выполнении двух объединений «один ко многим», - это мультипликативные результаты. Под этим я подразумеваю, что если для страны есть 3 записи в таблице провинции и 4 в таблице состояний, вы получите 12 строк для этой страны.
В этих обстоятельствах было бы более уместно сделать СОЮЗ. Например:
SELECT
c.Name AS 'CountryName',
'' AS 'ProvinceName',
ISNULL(s.[Name], '') AS 'StateName'
FROM Country c
LEFT OUTER JOIN [Province] p ON p.[CountryID]=c.[ID]
UNION ALL
SELECT
c.Name AS 'CountryName',
ISNULL(p.[Name], '') AS 'ProvinceName',
'' AS 'ProvinceName'
FROM Country c
LEFT OUTER JOIN [State] s ON s.[CountryID]=c.[ID]
только одна возможность. Это действительно зависит от того, как выглядят ваши данные и каков будет конечный результат.