OUTER JOIN
table2 のすべての要素を取得するのではなく、対応する要素が table 1 に存在する要素のみを取得する必要があるため、ここでは機能しません。
このようなことをしたいと思うでしょう:
SELECT tbl1.province, tbl1.district, tbl1.commune, tbl1.village
FROM dbo.table2 AS tbl2
INNER JOIN dbo.table1 AS tbl1
ON tbl1.province = tbl2.province_id
AND tbl1.district = tbl2.district_id
AND (tbl1.commune is NULL OR (tbl1.commune = tbl2.commune_id))
AND (tbl1.village is NULL OR (tbl1.village = tbl2.village_id))