Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come creare un'istruzione SQL utilizzando ID che potrebbero non essere disponibili nella tabella?

Un OUTER JOIN non funzionerà qui, perché non vuoi avere tutti gli elementi della tabella 2, ma solo quelli in cui esiste un elemento corrispondente nella tabella 1.

Vorresti fare qualcosa del genere:

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))