Sebuah OUTER JOIN
tidak akan berfungsi di sini, karena Anda tidak ingin memiliki semua elemen dari tabel2, tetapi hanya elemen yang memiliki elemen terkait di tabel 1.
Anda ingin melakukan sesuatu seperti ini:
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))