OUTER JOIN
sẽ không hoạt động ở đây, bởi vì bạn không muốn có tất cả các phần tử từ table2, mà chỉ những phần tử có phần tử tương ứng trong bảng 1.
Bạn muốn làm điều gì đó như sau:
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))