Sean dos tablas relacionadas, A y B, en un SGBD relacional. En A la clave primaria es el campo llamado "primaria" y, en B, la clave foránea (referenciada con A) es el campo "foránea". Si queremos obtener mediante un JOIN las filas de A que no tengan correspondencias en B, deberemos:
- A.A LEFT JOIN B ON A.primaria = B.foránea.Respuesta correcta
- B.A INNER JOIN B ON A.primaria = B.foránea.
- C.A RIGHT JOIN B ON A.primaria = B.foránea.
- D.A OUTER JOIN B ON A.primaria = B.foránea.
Explicación
Para obtener mediante un JOIN las filas de una tabla A que NO tienen correspondencia alguna en una tabla B relacionada, se debe utilizar un LEFT (OUTER) JOIN entre A y B, condicionando la igualdad de la clave primaria de A y la clave foránea de B en la cláusula ON, luego filtrando con una cláusula WHERE que especifique que B.foranea IS NULL. Este filtro identifica las filas donde no existe coincidencia. INNER JOIN, por el contrario, solo devuelve filas donde hay coincidencia en ambas tablas. RIGHT JOIN devolvería todas las filas de B con o sin correspondencia en A (lo opuesto a lo buscado). OUTER JOIN sin LEFT/RIGHT/FULL no es sintaxis válida SQL estándar.